2009-04-22 46 views
6

我參與了用Qt編寫的軟件項目,並在Linux上使用qmake和gcc構建。我們必須鏈接到質量相當低的第三方庫,並且發出大量警告。我想在我們的源代碼中使用-W -Wall,但將-w傳遞給令人討厭的第三方庫,以使控制檯免於噪音和混亂,因此我們可以專注於我們的代碼質量。有條件地使用qmake/gcc禁用警告?

在qmake中,有沒有辦法將CFLAGS/CXXFLAGS有條件添加到某些文件和庫中?

回答

5

Jonathan,我認爲問題在於你的源文件包含來自第三方庫的頭文件,並且你想關閉後者的警告。

凱文,我認爲你可以使用編譯指示來控制警告:gcc diagnostic pragmas

你可以這些之前和第三方庫的任何的#includes之後添加。

+0

正確,警告來自第三方標題。我會研究編譯指示,但是有沒有辦法將它們注入到第三方頭文件中,還是需要編輯它們的頭文件? – 2009-04-22 11:47:30

0

通常情況下,您會將第三方庫建立在與您自己的代碼不同的目錄中,因此您將擁有不同的makefile,因此您可以爲該編譯設置一組不同的標誌。

如果您將第三方庫代碼與您自己的代碼混合在一起,那麼您已經爲自己的維護做好了一個夢魘。

0

凱文,

qmake CONFIG+=debug QMAKE_CXXFLAGS_WARN_ON=-w QMAKE_CFLAGS_WARN_ON=-w 

應該是什麼,如果你有你的庫使用-isystem做 (使用CONFIG + =版本,如果你想...)

3

在項目文件例如爲:

QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0 
0

正如馬丁寫道通過

QMAKE_CXXFLAGS += -isystem ... 

添加包括目錄抑制了警告,只是在各自的頭。無需爲項目的任何源文件(甚至項目範圍)禁用警告或混淆#pragmas或包裝文件。

請注意,如果您使用的是QtCreator,您仍然(即另外)需要將該目錄添加到INCLUDEPATH,以便索引器選取標題。