qmake/gccで警告を条件的に無効にしますか?
-
13-09-2019 - |
質問
私はQTで書かれ、Linux上のQmakeとGCCで構築されたソフトウェアプロジェクトに関与しています。かなり低品質で、大量の警告を吐き出すサードパーティライブラリにリンクする必要があります。ソースコードで-w -wallを使用したいのですが、コードの品質に集中できるように、コンソールを騒音や乱雑さのない状態に保つために、厄介なサードパーティライブラリに-wを渡します。
Qmakeでは、特定のファイルやライブラリにCFLAGS/CXXFLAGSを条件付きで追加する方法はありますか?
解決
ジョナサン、問題は、ソースファイルがサードパーティライブラリのヘッダーファイルを含めている場所であり、後者の警告をオフにしたいと考えています。
ケビン、プラグマを使用して警告を制御できると思います。 GCC診断プラグマ
サードパーティLibsの#includeの前後にこれらを追加できます。
他のヒント
-isystemを使用してライブラリを含めるとどうなりますか。
プロジェクトファイルなど:
QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0
ケビン、
qmake CONFIG+=debug QMAKE_CXXFLAGS_WARN_ON=-w QMAKE_CFLAGS_WARN_ON=-w
する必要があります(希望する場合はconfig+=リリースを使用してください...)
通常、独自のコードから別のディレクトリにサードパーティライブラリを構築するので、そのための別のメイクファイルがあるので、そのコンパイルのために別のフラグセットを入れることができます。
サードパーティのライブラリコードと独自のコードを混ぜた場合、メンテナンスの悪夢のために自分自身を設定しました。
Martinが書いたように、Directoryを介してDirectoryを追加しました
QMAKE_CXXFLAGS += -isystem ...
それぞれのヘッダーだけで警告を抑制します。プロジェクトのソースファイル(またはプロジェクト全体)や#pragmasまたはwrappersファイルを混乱させるための警告を無効にする必要はありません。
QTCreatorを使用している場合は、(つまり、追加)ディレクトリをに追加したいことに注意してください。 INCLUDEPATH
そのため、インデクサーはヘッダーを拾います。