簡體   English   中英

gcc 同時生成依賴和對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM