Я пытаюсь создать файл make, который скомпилирует все файлы .cpp
в каталоге test
в файлы .o
в каталоге obj
. Ниже приведена сокращенная версия того, что я делаю. Проблема заключается в том, что вызовы, сделанные для компиляции файлов .o
, имеют правильное имя .o
, но все они компилируют один и тот же файл .cpp
.
gcc -c -o obj/foo.o test/foo.c
gcc -c -o obj/bar.o test/foo.c
gcc -c -o obj/baz.o test/foo.c
Что мне нужно изменить, чтобы компилировать соответствующий .cpp
файл?
CPP_FILES := $(wildcard test/*.cpp)
OBJ_FILES = $(patsubst test/%.cpp,obj/%.o,$(CPP_FILES))
obj/%.o: $(CPP_FILES)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
executable : $(OBJ_FILES) foo.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
Спасибо.