Fehler in QT-Headern, die clang verwenden

8

Fragen:

Meine Frage lautet also: Wie baue ich mein QT-Projekt, ohne die Warnungen komplett abzuschalten (oder um Millionen von zwecklosen zu durchsuchen, um meine eigenen zu finden)? Kann ich Warnungen nur für die QT-Header unterdrücken?

Details:

Problem

Vor einigen Monaten habe ich ein QT-Projekt in QT-Creator gestartet. Zu der Zeit benutzte ich gcc 4.6. Nach ein bisschen anderen Prioritäten haben sich die Dinge durchgesetzt und ich fand mich ohne Zeit, um an dem Projekt bis jetzt zu arbeiten. In der Zwischenzeit wechselte ich zu Klängen. Als ich mein QT-Projekt so konfiguriert habe, dass es clang verwendet - welches Projekt ohne Warnungen in g ++ kompiliert wurde - hat es innerhalb der QT-Header selbst 263 Warnungen generiert. Hauptsächlich Zeichenumwandlung und unerreichbarer Code.

Versuche

Um das zu umgehen, habe ich -isystem / pfad / zu / QT / include / dir basierend auf dieser Eintrag im Clang-Benutzerhandbuch , aber es schien nichts zu bewirken. Obwohl ich nicht sicher bin, denke ich, dass es daran liegt, dass mein Code #include die QT-Header nach Namen und nicht nach Verzeichnissen darstellt. Während die Lösung darin wäre, jeden einzelnen verwendeten QT-Header manuell aufzulisten (habe es nicht versucht), würde es bedeuten, dass ich ihn jedes Mal aktualisieren müsste, wenn ich QT hochrüste oder einen neuen Header verwende. Sicherlich gibt es eine bessere Lösung.

Wie hier gefragt, wird der eigentliche Kompilierbefehl ausgeführt:

%Vor%

Spezifikationen

Ich verwende:

  • Linux 3.2.0-40-generische # 64-Ubuntu SMP x86_64 GNU / Linux
    • Obwohl andere in meinem Team Windows verwenden
  • QT-Ersteller 2.6.2
  • QT 4.8.3
  • Klangversion 3.2 (Stamm 165250) (llvm / trunk 165249)
    • Ziel: x86_64-unknown-linux-gnu
Tsubashi 25.04.2013, 18:18
quelle

2 Antworten

2

Ich werde meine eigene Frage beantworten, denn wie sich herausstellt, handelt es sich in diesem Fall um eine besondere Umwelteigenschaft.

Ich habe zwei Kopien der QT-Bibliotheken auf meiner Entwicklungsmaschine, eine systemweit und eine projektspezifisch (im VCS enthalten). In den Projektbibliotheken ist qmake nicht enthalten, daher habe ich mein System qmake verwendet, das einen anderen Pfad angehängt hat, als ich in meine -isystem-Spezifikationen aufgenommen habe. Um das zu lösen, habe ich

hinzugefügt %Vor%

zu qmake.conf (in qt / mkspecs / nicht unterstützt / linux-clang /)

Da jemand anderes im Projekt qmake dazu gebracht hat, die Projektbibliotheken überall sonst zu benutzen.

    
Tsubashi 25.04.2013, 21:00
quelle
1

Für diejenigen, die auf diese Frage mit einem allgemeineren Problem stoßen als der Autor. Versuchen Sie Folgendes einzufügen:

%Vor%

in Ihrer .pro-Datei. Zusätzlich vermeiden Sie includes wie #include <QtCore/QtCore> Schreiben von #include <QtCore> stattdessen

Dies gezähmt qt ziemlich effizient für mich.

Siehe auch diese Quelle

    
Martin 02.02.2014 14:10
quelle

Tags und Links