Wie fügt man die Qt-Header mit -isystem (System-Header) mit qmake und qt5 zusammen?

8

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.

    
Julien-L 28.05.2015, 17:44
quelle

2 Antworten

11

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.

  1. 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:

    %Vor%

    Quelle: dieser Thread in Qt's Entwicklungsliste.

  2. Oder fügen Sie direkt in Ihrer Qt pro -Datei einfach das -isystem -Flag in das QMAKE_CXXFLAGS :

    ein %Vor%

    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.

Julien-L 29.05.2015, 18:07
quelle
1

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:

%Vor%     
peppe 29.05.2015 17:10
quelle

Tags und Links