我一直在閱讀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