我一直在阅读make手册第4.14节“自动生成先决条件”和“高级自动依赖项”this web page。make中的高级自动依赖关系
我想我明白从化妆手册中的部分,但有一两件事,我不能在我链接的网页绕到我的头:
如果你仔细想想,这个重新调用真的不需要。由于我们知道目标的某些先决条件已更改,因此我们确实不需要此版本中更新的先决条件列表。我们已经知道我们要重建目标,并且拥有更新的列表不会影响该决定。
所以不是这样做的:
%.P : %.c
$(MAKEDEPEND)
@sed 's/\($*\)\.o[ :]*/\1.o [email protected] : /g' < $*.d > [email protected]; \
rm -f $*.d; [ -s [email protected] ] || rm -f [email protected]
include $(SRCS:.c=.P)
他们这样做:
%.o : %.c
@$(MAKEDEPEND)
$(COMPILE.c) -o [email protected] $<
-include $(SRCS:.c=.P)
但是,如果我们知道一个目标的先决条件已经改变,我们不都去为依赖列表更新目标?这不正是在第一次调用make时做了什么?我的理解是包含在包括语句看起来就像文件:
list.o list.P : list.cc list.h debug.h
什么我没有得到吗?
“.P和.c文件”是否指.P和.o文件? – evading 2013-02-13 13:44:59
此外,如果不需要依赖文件来构建对象,我需要什么?无论如何,链接在每个可执行文件的明确目标中指定。 – evading 2013-02-24 10:12:50
@refuser:当然,.P和.o文件,对不起。您需要依赖文件来确保在* next *运行中不需要重建。 – thiton 2013-02-25 16:44:05