使用"%" Makefile中的字符两次

时间:2016-11-16 21:24:49

标签: makefile gnu-make

假设我希望我的Makefile规则如下:

对于每个目标文件./obj/%.o,它依赖于两个文件./src/%_1.cpp和./src/%_2.cpp(例如./obj/main.o取决于在./src/main_1.cpp和./src/main_2.cpp上。在这种情况下编写makefile的简单方法是

./obj/%.o: ./src/%_1.cpp ./src/%_2.cpp

但是这种方法不起作用......任何人都可以建议我如何在这种情况下定义规则?

另外,我遇​​到的另一个问题是 - 假设你定义了以下规则:

./obj/%.o: ./src/%_1.cpp
./obj/%.o: ./src/%_2.cpp

然后是#34;等同于"到

./obj/%.o: ./src/%_1.cpp ./src/%_2.cpp

提前致谢。

1 个答案:

答案 0 :(得分:1)

  

在这种情况下编写makefile的一种天真的方式是

./obj/%.o: ./src/%_1.cpp ./src/%_2.cpp
     

但这种方法不起作用

确实如此(我假设你实际上正在定义一个应该执行的食谱,你在这里没有显示)。什么不起作用?

  

另外,我遇​​到的另一个问题是 - 假设你定义了以下规则:

./obj/%.o: ./src/%_1.cpp
./obj/%.o: ./src/%_2.cpp
     

然后是#34;等同于"到

./obj/%.o: ./src/%_1.cpp ./src/%_2.cpp

不,一点也不。任何没有配方的模式规则都会删除该模式规则。模式规则永远不会像这样组合。

请参阅Canceling Implicit Rules