10

私はメイクファイルビルダーとしてqmakeを使用しており、それに固執したいと考えています。さらに、「gcc -Wall -Werror -Wundef -Wextra」を使用して堅牢なコードを取得したいと考えています。「-pedantic」について考えていますが、それはまだ先の話です。現時点での私の主な問題は、ブースト、qt の一部などのライブラリによって生成される大量の警告です。

現時点では、警告を生成するヘッダーを含めるときは常にプラグマを使用します

    #pragma GCC diagnostic ignored "-Wall"
    #include <QtGui>
    ...
    #include <QWidget>
    #pragma GCC diagnostic error "-Wall"

これは、特に他のプログラマーもそうしなければならないので、かわいらしくはなく、かなり退屈で扱いにくいものです。qt-libraries をシステム ヘッダーとして含めることを許可する qmake を使用して、警告を抑制するオプションはありますか。プレーンなメイクファイルと cmake の場合、私は -isystem を知っていますが、このための qmake ペンダントが見つかりません。

4

5 に答える 5

11

私が見つけた最も簡単な方法は、QMAKE_CXXFLAGS を介して直接インクルードすることです。たとえば、Boost の場合、プロジェクト ファイルでは次のようになります。

QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0
于 2011-06-22T09:26:53.577 に答える
1

多くの設定が spec ファイルにハードコードされているため、独自に作成する必要があると思います。mkspecs/linux-g++/qmake.conf または mkspecs/win32-g++/qmake.conf を読むことから始めます

デフォルトで、CONFIG は warn_on 設定を使用することがわかります。そして mkspecs/common/g++ にあります

QMAKE_CFLAGS_WARN_ON    += -Wall -W
QMAKE_CFLAGS_WARN_OFF   += -w
QMAKE_CXXFLAGS_WARN_ON  += $$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF

そのため、仕様ファイルを変更してすべてのプロジェクトの新しい設定を既定にするか、プロジェクト ファイルでこの変数を設定することができます。

CONFIG += warn_on
QMAKE_CFLAGS_WARN_ON    = -Wall -Werror -Wundef -Wextra -pedantic
QMAKE_CXXFLAGS_WARN_ON  = $$QMAKE_CFLAGS_WARN_ON

qt インクルード パスは mkspecs/features/qt.prf にハードコードされています。

#handle includes
INCLUDEPATH = $$QMAKE_INCDIR_QT $$INCLUDEPATH #prepending prevents us from picking up "stale" includes

コンポーネントが -I で結合されているため、QMAKE_INCDIR_QT を INCLUDEPATH の一部にする必要はありません。$$join(QMAKE_INCDIR_QT, " -isystem", "-isystem") として別の場所に展開したい...

于 2011-04-28T17:11:06.967 に答える
-4

Note that the correct answer to this one is to use the SYSTEM keyword in the include_target() macro:

include_directories(SYSTEM ${QT_INCLUDES})

This works for many libraries, not just Qt which I could use without too much problems. But the Magic++.h is really a horrible piece of work in comparison and I had to have this capability.

You can find more information on this question:

Use -isystem instead of -I with CMake

于 2014-05-31T00:18:08.883 に答える