web-dev-qa-db-ja.com

Qt:CONFIG + = C ++ 11、ただし-std = c ++ 0x

Qt Creator 2.8/Qt5.1でプロジェクトをVS 2010でコンパイルすると、すべて問題ありません。 MinGWでも同じことをすると、次のエラーが発生します。

 error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

C + 11を有効にする必要があることを理解していますが、CONFIG += console c++11 .proファイル内。これは必要なものではありませんか? 何が悪いのですか?

私が見るメイクを見ると:

CXXFLAGS      = -pipe -fno-keep-inline-dllexport -g -std=c++0x

混乱します、私はプロファイルでc ++ 11を言います。

  1. すべてを削除した、qmakeなどを最初から実行した、結果なし
  2. 言ったように、VS2010でそれは動作します
  3. ここからgcc 4.8.0でMinGWを使用します。 http://qt-project.org/downloads
  4. これが重要な場合は、Win7 32

チェック済み:

解決策が見つかりましたが、しばらくしてそれを受け入れることができます: https://stackoverflow.com/a/19530028/356726

20
Horst Walter

わかりました、あなたのヒントのおかげで私はそれを理解しました。

上から可能なアドバイスを試した後、それでも成功しない場合は、自分のプロジェクトで考えられるサブプロジェクトをすべて除外しました。結局、CONFIG += c++11が定義されていないQMLサンプル.proを見つけました。

それがエラーの原因でした。根本的な原因は、私が取り組んでいるプロジェクトではなく、同じステップでコンパイルされたサブプロジェクトでした。

10
Horst Walter

次のmkspecs/win32-g++/qmake.conf行を変更してみてください:

QMAKE_CXXFLAGS_CXX11    = -std=c++0x

に:

QMAKE_CXXFLAGS_CXX11    = -std=c++11

そしてqmakeを再実行します。


追加の詳細:

"c ++ 11"機能をCONFIG qmake変数に追加すると、mkspecs/features/c++11.prfファイルがプルされます( qmake Advanced Usageの「Adding New Configuration Features」セクションを参照)。 詳細はドキュメント)。

そのqmakeプロファイルには、C++ 11サポートを構成する他のものの中でQMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11行があります。コメントで述べたように、CONFIG変数に「c ++ 11」を追加することは、c ++ 11サポートがqmakeに必要であることを示す適切な方法です。

9
Michael Burr

Qt Creator 2.7.2を使用していますが、.proファイルに次の行があります。

QMAKE_CXXFLAGS += -std=c++11

これはうまくいきますか?

7
TonyK

qmakeはc ++ 11に持っているフラグを使用します。したがって、次のように上書きできます。

unix:QMAKE_CXXFLAGS_CXX11 = -std = c ++ 11

CONFIG * = c ++ 11

古いqmakeがそれらを認識していない可能性があるため、構成にc ++ 11が追加されている場合は、代わりに-std = c ++ 14または-std = c ++ 17を使用するように指示することもできます。

1
edwinc