0

我正在研究头文件依赖 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 被删除。为什么?

4

1 回答 1

1

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

于 2013-06-20T19:20:35.203 回答