Ich kompiliere mein Qt5-basiertes Projekt mit Warnungen, die für g ++ aktiviert sind:
%Vor%Beim Kompilieren erzeugt Qt viele Warnungen (1000+ mit nur einem einfachen Widget) und versteckt die Warnungen vor meinem Code.
Wie kann qmake angewiesen werden, den Schalter -isystem
zu verwenden, wenn die Qt-Header angegeben werden, anstatt -I
, um die Warnungen zu unterdrücken? Ich möchte die Warnungen nicht deaktivieren. Ich möchte sie für meinen Code behalten.
HINWEIS: Ich habe diese SO-Frage überprüft, aber in meinem Fall funktioniert das nicht, möglicherweise nur für Qt4. Ich benutze Qt5.
HINWEIS 2: Dies ist ein bestätigter Fehler , ich suche nach einer Lösung. Ich benutze eine aktuelle Version von qmake, kompiliert aus Sourcen 5.4.1, diese Version übergibt Systemheader von /include
und /usr/include
als Systemheader, aber nicht die Qt-Header.
HINWEIS 3: Ich weiß CMake würde funktionieren, aber das ist keine Option für mich.
Ich habe zwei Möglichkeiten gefunden, Warnungen von Qt-Headern zu unterdrücken, indem ich Qt im Systempfad installiere (wie in der anderen Antwort vorgeschlagen) und den anderen direkt aus Ihrer pro
-Datei mit Hilfe von GCC-Flags.
Wenn Sie ein eigenes Qt erstellen, konfigurieren Sie den Installationspfad des Headers auf einen Ihrer Systempfade:
%Vor% Systempfade sind /usr/include
oder /usr/local/include
oder einer der restlichen in:
Quelle: dieser Thread in Qt's Entwicklungsliste.
Oder fügen Sie direkt in Ihrer Qt pro
-Datei einfach das -isystem
-Flag in das QMAKE_CXXFLAGS
:
Die resultierende GCC-Befehlszeile sieht folgendermaßen aus:
%Vor% Beachten Sie, dass die Qt-Include-Pfade weiterhin mit -I
hinzugefügt werden, sodass Qt Creator alle Qt-Header "sehen" kann, aber GCC das -isystem
-Flag erkennt und Warnungen für alle Unterordner unterdrückt.
Haben Sie Qt in einem System Pfad installiert? Andernfalls wird qmake -isystem
nicht übergeben.
Sie können prüfen, welche Pfade Systempfade gemäß qmake sind, indem Sie mkspec/qconfig.pri
lesen (nachdem Sie configure
ausgeführt haben), die Systempfade werden auf die Variable QMAKE_DEFAULT_INCDIRS
gesetzt. Hier: