我正在尝试创建一个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
Run Code Online (Sandbox Code Playgroud)
我需要更改什么才能编译相应的.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 $@
Run Code Online (Sandbox Code Playgroud)
谢谢.
您需要匹配%模板规则.目前你说每个.o取决于每个 cpp文件.并且$<是他们中的第一个.
替换为:
obj/%.o : test/%.cpp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6023 次 |
| 最近记录: |