我一直在阅读此网页上的 make 手册第 4.14 节“自动生成先决条件”和“高级自动依赖项” 。
我想我理解了制作手册中的部分,但是在我链接的网页上,我无法理解一件事:
如果你仔细想想,这个重新调用真的是不需要的。由于我们知道目标的某些先决条件发生了变化,因此在此构建中我们真的不需要更新的先决条件列表。我们已经知道我们将重建目标,并且拥有更新的列表不会影响该决定。
所以不要这样做:
%.P : %.c
$(MAKEDEPEND)
@sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' < $*.d > $@; \
rm -f $*.d; [ -s $@ ] || rm -f $@
include $(SRCS:.c=.P)
他们是这样:
%.o : %.c
@$(MAKEDEPEND)
$(COMPILE.c) -o $@ $<
-include $(SRCS:.c=.P)
但是,如果我们知道目标先决条件已更改,我们是否不必更新该目标的依赖关系列表?这不正是第一次调用make时所做的吗?我的理解是包含语句中包含的文件看起来像:
list.o list.P : list.cc list.h debug.h
我没有得到什么?