我參與了用Qt編寫的軟件項目,並在Linux上使用qmake和gcc構建。我們必須鏈接到質量相當低的第三方庫,並且發出大量警告。我想在我們的源代碼中使用-W -Wall,但將-w傳遞給令人討厭的第三方庫,以使控制檯免於噪音和混亂,因此我們可以專注於我們的代碼質量。有條件地使用qmake/gcc禁用警告?
在qmake中,有沒有辦法將CFLAGS/CXXFLAGS有條件添加到某些文件和庫中?
我參與了用Qt編寫的軟件項目,並在Linux上使用qmake和gcc構建。我們必須鏈接到質量相當低的第三方庫,並且發出大量警告。我想在我們的源代碼中使用-W -Wall,但將-w傳遞給令人討厭的第三方庫,以使控制檯免於噪音和混亂,因此我們可以專注於我們的代碼質量。有條件地使用qmake/gcc禁用警告?
在qmake中,有沒有辦法將CFLAGS/CXXFLAGS有條件添加到某些文件和庫中?
Jonathan,我認爲問題在於你的源文件包含來自第三方庫的頭文件,並且你想關閉後者的警告。
凱文,我認爲你可以使用編譯指示來控制警告:gcc diagnostic pragmas
你可以這些之前和第三方庫的任何的#includes之後添加。
通常情況下,您會將第三方庫建立在與您自己的代碼不同的目錄中,因此您將擁有不同的makefile,因此您可以爲該編譯設置一組不同的標誌。
如果您將第三方庫代碼與您自己的代碼混合在一起,那麼您已經爲自己的維護做好了一個夢魘。
凱文,
qmake CONFIG+=debug QMAKE_CXXFLAGS_WARN_ON=-w QMAKE_CFLAGS_WARN_ON=-w
應該是什麼,如果你有你的庫使用-isystem做 (使用CONFIG + =版本,如果你想...)
。
在項目文件例如爲:
QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0
正如馬丁寫道通過
QMAKE_CXXFLAGS += -isystem ...
添加包括目錄抑制了警告,只是在各自的頭。無需爲項目的任何源文件(甚至項目範圍)禁用警告或混淆#pragmas或包裝文件。
請注意,如果您使用的是QtCreator,您仍然(即另外)需要將該目錄添加到INCLUDEPATH
,以便索引器選取標題。
正確,警告來自第三方標題。我會研究編譯指示,但是有沒有辦法將它們注入到第三方頭文件中,還是需要編輯它們的頭文件? – 2009-04-22 11:47:30