8

質問:


したがって、私の質問は次のとおりです。警告を完全にオフにせずに QT プロジェクトをビルドするにはどうすればよいでしょうか (または、何百万もの目的のないものを分類して自分のものを見つける必要があります)。QT ヘッダーだけの警告を抑制することはできますか?

詳細:


問題


数か月前、私は QT-Creator で QT プロジェクトを開始しました。当時、私は gcc 4.6 を使用していました。少し他の優先事項が自分自身を主張した後、私は今までプロジェクトに取り組む時間がないことに気づきました。その間、clang の使用に切り替えました。QT プロジェクトを clang を使用するように構成したとき (このプロジェクトは g++ で警告なしでコンパイルされました)、QT ヘッダー自体の中に 263 個の警告がすべて生成されました。主に符号変換と到達不能コード。


試み


これを回避するために、 Clang User Manual のこのエントリに基づいて -isystem /path/to/QT/include/dir を追加しましたが、何も影響しなかったようです。#include確かではありませんが、コードがディレクトリではなく名前による QT ヘッダーであるためだと思います。その解決策は、使用されているすべての QT ヘッダーを手動でリストすることかもしれませんが (試したことはありません)、QT をアップグレードしたり、新しいヘッダーを使用したりするたびに更新する必要があります。確かに、より良い解決策があります。

ここで要求されているのは、実行されている実際のコンパイル コマンドです。

clang++ -c -pipe -Qunused-arguments -Weverything -cxx-isystem /path/to/qt/4.8.3/include/ -g -D_REENTRANT -DQT_NO_KEYWORDS -DQT_SHARED -I/path/to/qt/x86_64/4.8.3/mkspecs/unsupported/linux-clang -I. -I.moc -I.ui -I/path/to/qt/4.8.3/include/ -o .obj/main.o main.cpp

仕様


私は使っている:

  • Linux 3.2.0-40-generic #64-Ubuntu SMP x86_64 GNU/Linux
    • 私のチームの他のメンバーは Windows を使用していますが、
  • QT クリエーター 2.6.2
  • QT4.8.3
  • clang バージョン 3.2 (トランク 165250) (llvm/トランク 165249)
    • ターゲット: x86_64-unknown-linux-gnu
4

2 に答える 2

2

この場合、それは特定の環境の癖であることが判明したため、私は自分の質問に答えます.

私の開発マシンには QT ライブラリの 2 つのコピーがあり、1 つはシステム全体、もう 1 つはプロジェクト固有 (VCS に含まれています) です。プロジェクト ライブラリには qmake が含まれていないため、システムの qmake を使用しました。これは、-isystem 仕様に含めていたパスとは異なるパスを追加しました。これを解決するために、追加しました

QMAKE_INCDIR_QT = 

qmake.conf へ (qt/mkspecs/unsupported/linux-clang/ 内)

プロジェクトの他の誰かがqmakeを扇動して、他の場所でプロジェクトライブラリを使用したためです。

于 2013-04-25T21:00:29.120 に答える
2

著者よりも一般的な問題でこの質問に出くわした人のために。挿入してみてください:

LIBS_USED_FOR_QT = QtCore QtSql QtMultimediaWidgets QtSensors QtSvg QtXml QtPrintSupport QtWidgets QtQuick QtQml QtPositioning QtGui QtWebKitWidgets
for(somelib, $$list($$LIBS_USED_FOR_QT)) {
    QMAKE_CXXFLAGS += -isystem $$(QTDIR)/lib/$${somelib}.framework/Versions/5/Headers/
    QMAKE_CXXFLAGS += -isystem $$(QTDIR)/lib/$${somelib}.framework/Headers/
}

あなたの.proファイルで。さらに、代わりに#include <QtCore/QtCore> 書き込みなどのインクルードを避ける#include <QtCore>

これは私にとって非常に効率的にqtを飼いならしました。

このソースも参照してください

于 2014-02-02T14:10:13.173 に答える