4
雖然看着構建系統,但它們中的很多(SCons,bjam,cmake,Tundra等)都有一個內置的#include掃描器。然而gcc & icc提供-MMD
(或-MD
)選項,它輸出C++文件依賴的頭文件的名稱。「g ++ -MMD」比包含掃描更好嗎?
-MMD
依賴項選項似乎是可靠的。如果將一個#include
添加到C文件中,其時間戳將會更改,以便構建系統重新編譯它。如果您將一個#include
添加到頭文件,它的時間戳會改變,它會重新編譯所有受影響的C文件。
包含掃描系統中斷,但-MMD
在我看來是強健的。哪個最好,爲什麼?
謝謝。你知道爲什麼所有這些工具都有#include掃描功能嗎? – ACyclic
不是每個人都使用gcc(或icc),而舊版本的gcc只在'-MD'輸出中包含文件名而不是完整的路徑名,例如'foo.o:'而不是'dir1/dir2/foo.o' –
MMD的一個小問題包括列表:當你#include它會查看所有-I包括目錄。如果有兩個foo.h文件,它會讀取第一個文件。因此,如果您在搜索列表中的前面添加一個具有相同名稱的新頭文件,則依賴於-MMD將會中斷。 –
ACyclic