SRCS := $(wildcard *_test.c) OBJS := $(patsubst %_test.c, %_test.o, $(SRCS)) CFLAGS := -I../src TESTS := $(patsubst %_test.c, %_test, $(SRCS)) EXEC_TESTS := $(patsubst %_test, ./%_test, $(TESTS)) .PHONY: all all: munit.o $(TESTS) $(EXEC_TESTS) .PHONY: clean clean: $(RM) *.o *_test string_view_test: munit.o string_view_test.o ../build/string_view.o $(CC) $? $(CFLAGS) -o $@