我很好奇,如果有一個選項可以禁用有關參數對編譯語言無效的gcc警告。爲不兼容的選項禁用gcc警告
例:
cc1: warning: command line option "-Wno-deprecated" is valid for C++/Java/ObjC++ but not for C
我們的構建系統通過我們在全球範圍橫跨構建決定了警告。 我們有C/C++代碼和警告,當試圖找到實際的警告時會變得非常煩人。
有什麼建議嗎?
我很好奇,如果有一個選項可以禁用有關參數對編譯語言無效的gcc警告。爲不兼容的選項禁用gcc警告
例:
cc1: warning: command line option "-Wno-deprecated" is valid for C++/Java/ObjC++ but not for C
我們的構建系統通過我們在全球範圍橫跨構建決定了警告。 我們有C/C++代碼和警告,當試圖找到實際的警告時會變得非常煩人。
有什麼建議嗎?
在我看來,如果有這樣一個選項,就必須有一個進一步的選項來關閉關於該選項的警告,等等無限。所以我懷疑沒有。
擁有完全不同語言版本的相同選項似乎有點奇怪 - 我將有不同的選項定義爲makefile宏,並適用於不同的目標。
我意識到外人看起來很奇怪。我不負責構建系統,我只是想清理它。我並沒有真正有能力分開這兩個人。 – 2009-06-04 23:26:21
唉gcc沒有能力打開或關閉個別警告。有些警告是特殊的,可以設置警告級別,但無法關閉您不關心的警告。
我的意思是誰會在乎文件末尾缺少空行?我知道有一個補丁可以關閉它,但是從源代碼構建我的編譯器有點太過分了。
對於您的構建系統,您可能需要爲不同的語言定義單獨的警告集。如果您需要使用其他編譯器而不是gcc,會發生什麼?
我們的構建系統不支持多個編譯器,實際上3。跨越6種不同的架構。 GCC編譯舊的C代碼是邊緣的情況下,和 - >爲什麼我問的問題.. – 2009-06-04 23:28:09
要啓用特定的警告在GCC -Wxxxx與-Wno-XXXX禁用它們。
可以開頭的選項請求
-W', for example -Wimplicit to request warnings on implicit declarations. Each of these specific warning options also has a negative form beginning
-Wno-」來關閉警告許多特定的警告;例如,-Wno-implicit。本手冊僅列出兩種形式中的一種,無論哪種都不是默認值。
然而,@尼爾關於分離不同語言的選項是正確的。如果你使用make你可以例如將所有C選項放入CFLAGS中,並將所有C++選項放入CCFLAGS中。
警告選項生成的警告,我不認爲-Wno *的適用於這種情況。 – 2009-06-04 23:30:16
如果設置CFLAGS變量它只會影響C文件,如果設置CXXFLAGS變量它只會影響C++文件,所以可以容易地分離的邏輯。
這取決於他的makefile – 2009-06-05 06:58:03
恕我直言,這是最好的解決在Make水平。你知道哪些源文件是C和哪些是C++,對嗎? – 2009-06-05 06:37:05