Frage

Ich bin an einem in QT geschriebenen Softwareprojekt beteiligt und mit QMake und GCC unter Linux erstellt. Wir müssen zu einer Bibliothek von Drittanbietern verlinken, die von ziemlich geringer Qualität und Tonnen von Warnungen ausdrückt. Ich würde gerne -wall in unserem Quellcode verwenden, aber übergeben -w an die böse Bibliothek von Drittanbietern, um die Konsole frei von Lärm und Unordnung zu halten, damit wir uns auf unsere Codequalität konzentrieren können.

Gibt es in QMake eine Möglichkeit, bestimmte Dateien und Bibliotheken konditionell CFLAGs/CXXFLAGs hinzuzufügen?

War es hilfreich?

Lösung

Jonathan, ich denke, das Problem ist, dass Ihre Quelldateien Header -Dateien aus Bibliotheken der Drittanbieter enthalten, und Sie möchten die Warnungen für letztere ausschalten.

Kevin, ich denke, Sie können Pragmas verwenden, um Warnungen zu kontrollieren: GCC -diagnostische Pragmas

Sie können diese vor und nach #Includes für LIBs von Drittanbietern hinzufügen.

Andere Tipps

Was ist, wenn Sie Ihre Bibliothek mit -isystem einbeziehen?

In der Projektdatei zB:

QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0

Kevin,

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

Sollte dies tun (verwenden Sie config+= Release, wenn Sie möchten ...)

Normalerweise würden Sie die Bibliothek von Drittanbietern in einem separaten Verzeichnis aus Ihrem eigenen Code erstellen, sodass Sie ein anderes Makefile dafür haben, damit Sie eine andere Reihe von Flags für diese Zusammenstellung einstellen können.

Wenn Sie den Bibliothekscode von Drittanbietern mit Ihrem eigenen Code gemischt haben, haben Sie sich für einen Wartungsalptraum eingerichtet.

Wie Martin schrieb, das Verzeichnis include -Verzeichnis hinzufügte

QMAKE_CXXFLAGS += -isystem ...

unterdrückt Warnungen nur in den jeweiligen Headern. Es ist nicht erforderlich, Warnungen für Quelldateien Ihres Projekts (oder sogar projektweit) zu deaktivieren oder mit #Pagmas- oder Wrappers-Dateien zu spielen.

Beachten Sie, dass Sie (dh zusätzlich) das Verzeichnis hinzufügen möchten, wenn Sie QTCreator verwenden, zu dem Verzeichnis hinzufügen möchten INCLUDEPATH Also nimmt der Indexer die Header auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top