[英]gcc make dependency and object simultaneously
我正在使用 gcc 4.8.2,並且我正在嘗試同時構建目標文件和依賴文件。
這有效:
$ g++ -std=c++11 -MP -MD -c foo.cxx -o foo.o
$ [ -s foo.d ] && [ -s foo.o ] && echo yay
yay
但是,我想生成foo.D
而不是生成foo.d
,所以我嘗試了:
$ rm foo.d foo.o
$ g++ -std=c++11 -MP -M -MF foo.D -c foo.cxx -o foo.o
$ [ -s foo.D ] && [ -s foo.o ] && echo yay
$
這成功生成了foo.D
,但會生成一個空的foo.o
。 為什么? -MD
的文檔開始於:
-MD 等價於 -M -MF file ,只是不暗示 -E。
我不知道為什么-M -MF foo.D
對你不起作用,我對文檔的閱讀和你的一樣。 我認為它應該起作用。 匯編的一條strace
可能會告訴您有關正在發生的事情的有趣信息。
但是作為解決方案,您可以將-MF foo.D
參數添加到原始命令行,這應該-MF foo.D
您的需求。
正如-MF
的文檔所說:
-MF 文件 與 -M 或 -MM 一起使用時,指定要寫入依賴項的文件。 如果沒有給出 -MF 開關,則預處理器將規則發送到它發送預處理輸出的相同位置
當與驅動程序選項 -MD 或 -MMD 一起使用時,-MF 會覆蓋默認的依賴項輸出文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.