C++ Makefile中$(objs:%.o:%.cpp和$(objs:$(objs:.o=.cpp)之间的区别是什么
我在当前目录中添加了.c sub.c,并通过makefile编译它们 我做了以下工作: 方案1: objs=$patsubst%.cpp、%.o、$wildcard*.cpp $objs:%.o:%.cppC++ Makefile中$(objs:%.o:%.cpp和$(objs:$(objs:.o=.cpp)之间的区别是什么,c++,makefile,compilation,C++,Makefile,Compilation,我在当前目录中添加了.c sub.c,并通过makefile编译它们 我做了以下工作: 方案1: objs=$patsubst%.cpp、%.o、$wildcard*.cpp $objs:%.o:%.cpp g++-o$@-c$makefile 1中的规则等效于 sub.o: sub.cpp g++ -o $@ -c $< add.o: add.cpp g++ -o $@ -c $< 这是正确的 makefile 2中的规则扩展为 sub.o add.o: sub
g++-o$@-c$makefile 1中的规则等效于
sub.o: sub.cpp
g++ -o $@ -c $<
add.o: add.cpp
g++ -o $@ -c $<
这是正确的
makefile 2中的规则扩展为
sub.o add.o: sub.cpp add.cpp
g++ -o $@ -c $<
也就是说,这两个目标都依赖于两个源文件。请注意,扩展到第一个先决条件,在本例中为sub.cpp。因此,这是规则使用的唯一源文件,即使在尝试构建add.o时也是如此。是否有意在第二次编译sub.cpp时覆盖add.o,或者这是一个拼写错误。尤其是第一句和最后一句。@Matt。这个文件很有用!谢谢。