從man gcc
-MT目標
改變相關性生成發出的規則的目標。默認情況下,CPP採用主輸入文件的名稱,刪除任何目錄組件和任何文件後綴(如.c),並附加平臺的通常對象後綴。結果是目標。
-MT選項會將目標設置爲您指定的字符串。如果您需要多個目標,則可以將它們指定爲-MT的單個參數,或使用多個-MT選項。
例如,-MT '$(objpfx)foo.o的' 可能給
$(objpfx)foo.o的:foo.c的
-MQ目標
同-MT ,但它會引用任何特殊的字符。 -MQ '$(objpfx)foo.o' 給出
$$(objpfx)foo.o的:foo.c的
默認的目標自動被引號,就好像它是-MQ一樣。
所以,你可以使用例如
gcc -MM -MT util/test.o util/test.c
gcc -MM -MT ui/resource.o ui/resource.c
更新:
有幾種可能性,如果你想在一個文件中的所有依存關係。
您可以執行gcc -MM
序列,並將輸出重定向
(gcc -MM -MT util/test.o util/test.c; gcc -MM -MT ui/resource.o ui/resource.c) >file.deps
你可以使用sed或perl的後處理輸出
gcc -MM util/test.c ui/resource.c | perl -p -e 's,^(.+?)\.o: (.+?)/\1\.c.*,$2/$&,;' >file.deps
可以改向第一輸出和附加以下一些文件
gcc -MM -MT util/test.o util/test.c >file.deps
gcc -MM -MT ui/resource.o ui/resource.c >>file.deps
不好......這樣我需要生成一個依賴文件fo r每個源文件。我想從我的所有來源生成一個單獨的依賴文件... –
@AndréWagner請參閱最新的答案。 –