我正在通過Automatic Dependency Generation在make manual閱讀,我不明白爲什麼需要此功能。該項目是我的工作,我開始從頭開始編寫的結構是這樣的:自動依賴生成
- 各單位(庫)有它自己的文件夾
- 每個.cpp文件應包括具有相同的單個h文件名稱來自同一個目錄。好的,這個規則可能有點過於嚴格,就像循環依賴一樣,在這種情況下,我可能會包含另一個.h文件,正如下一個規則
- 中所述,在.h文件中包含其他頭文件時,如果依賴關係位於另一個單元(庫)中,則總是使用相對於項目根目錄的路徑。否則,只需包含文件的名稱即可。
在makefile中,我將-I .
傳遞給編譯器。當它遇到目錄X中的.cpp文件時,它將在同一目錄(或在.
目錄中)中搜索.h文件。解析.h文件時,它將遇到包含相對於.
文件夾的信息,因此它將知道在哪裏查找它們。
現在,如果代碼可以像我上面描述的那樣構造,那麼爲什麼有人要生成-M
標誌的依賴關係列表,並將sed混亂以產生一個難以理解的.d文件(依賴關係)?我沒有看到從代碼文件生成特定的依賴關係列表。
哦,對了......我明白了。但在編譯.cpp文件之前,不會檢查整個依賴關係樹的更改嗎? – 2012-07-06 00:11:17
@MihaiTodor:Make不知道你的依賴是什麼。所有Make可以做的是找出是否需要根據依賴關係的變化重新運行規則。您需要爲其提供每個目標的依賴列表。 – 2012-07-06 00:13:21
你說得對。現在我明白了。非常感謝你! – 2012-07-06 00:19:33