make - 为什么某些模式规则标记为隐含?

时间:2013-06-20 19:10:14

标签: makefile gnu-make

我正在处理头文件依赖Makefile。这是代码的一个非常简化的版本:

cdeps/%.mk:: %
    mkdir -p $(@D)
    ./cdeps.sh cdeps $* .

%.cpp.o: %.cpp cdeps/%.cpp.mk
    g++ -c $< -o $@ -I.

include $(shell find cdeps -type f 2>/dev/null)

a.cpp包括b.cpp; cdeps.sh为包含文件的其他cdeps /%。mk添加了依赖项。

因此,当我'a.cpp.o'时,首先创建cdeps / a.cpp.mk,然后创建a.cpp.o(完全符合预期)。 然后删除cdeps / a.cpp.mk。为什么呢?

1 个答案:

答案 0 :(得分:1)

您可以在此处阅读有关隐式规则以及删除目标的时间以及如何防止这些规则:http://www.gnu.org/software/make/manual/html_node/Chained-Rules.html