2013-07-25 54 views
4

在編譯Qt項目中的文件集合時,我看到很多與此類似的警告。如何停止關於未使用的私人領域的警告?

In file included from /usr/local/Trolltech/Qt-4.8.6/include/QtGui/qevent.h:52: 
/usr/local/Trolltech/Qt-4.8.6/include/QtGui/qmime.h:119:10: warning: private field 'type' is not used [-Wunused-private-field] 
    char type; 
    ^

每建議從各種搜索,我沒有添加條目

QMAKE_CXXFLAGS + = -Wno-未使用的,私人領域

到.pro文件,並確認它在正確顯示出來編譯器調用,但我仍然收到該警告。

我正在用叮噹在Mac上運行Qt。

在此先感謝您的任何見解。

回答

6

this answer,嘗試

QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-private-field 

看來,QMAKE_CXXFLAGS_WARN_ON標誌添加到編譯器命令行QMAKE_CXXFLAGS後,並會重新啓用警告(因爲QMAKE_CXXFLAGS包含-Wall)。

+0

是的---那樣做---非常感謝你。 – David

0

我不是一個鏗鏘的傢伙,但根據http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-in-system-headers,你可以使用-isystem標誌與這些Qt頭文件所在的目錄,這將把它們視爲系統包含併爲它們禁止警告。

+0

我試着添加QMAKE_CXXFLAGS + = -isystem-prefix /usr/local/Trolltech/Qt-4.8.6/include/和 QMAKE_CXXFLAGS + = -isystem /usr/local/Trolltech/Qt-4.8.6/include/ 但這並沒有幫助。 – David

1

這聽起來很奇怪,你不能編譯由於Qt庫。 由於我不在Mac上開發,我要檢查的是支持的Mac版本/編譯器以及如何在Mac上編譯。之後,如果您符合要求,我會將此報告爲錯誤。

的另一種方法(如在此QT-錯誤已經報告:To #include generates warnings)是包括圍繞編譯指示警告報頭。

#pragma GCC diagnostic ignored "-Wunused-private-field" 
#include <QtGui> 
#pragma GCC diagnostic warning "-Wunused-private-field" 
+0

我沒有說我無法編譯---我只是不知道如何消除特定的警告。 – David

+0

@David我誤解了。它可以幫助雜注忽略。 – kikeenrique

+0

對於這種方法有些東西需要說明,所以與庫代碼相比,用戶代碼仍然可以使用警告,儘管我討厭用這些東西污染我的代碼。但是,由於我已經將Qt的整個源代碼全部取消,所以我試圖自己刪除未使用的字段! – David

1

首先,我不確定它的QT或不是QT的bug,但我在QT論壇上發現了一個最近的問題。我希望它解決了。

Possible bug: qmime.h warning 「char type is unused」

還有一個, Clang 4.2 warns about QMacMime unused private field "type"

這可能會幫助你。

+0

據我所知,這些都不是錯誤---我認爲它們是Qt代碼的合法警告,但只是遺憾的是Qt人員沒有確保他們的代碼沒有未使用的字段之類的東西和其他會導致警告的事情。 – David