web-dev-qa-db-ja.com

Qt CreatorでC ++ 11を有効にする方法

タイトルは一目瞭然です。 Qt Creator 2.7.0をダウンロードしましたが、いくつかの基本的なC++ 11コードをコンパイルしようとしています。

int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
  x *= 2;
}

次のようなエラーが表示されます。

range based for loops are not allowed in c++ 98 mode

それでも この記事 によると、Qt CreatorのこのバージョンはC++ 11をサポートしています。それでどうやってそれを有効にするのですか?

153

によると このサイト 追加

CONFIG += c++11

あなたの.proファイルに(そのWebページの下部に参照してください) Qt 5が必要です。


他の答えは、提案する

QMAKE_CXXFLAGS += -std=c++11(またはQMAKE_CXXFLAGS += -std=c++0x

Qt 4.8とgcc/clangでも動作します。

250
Ali

これをあなたの。proファイルに追加してください

QMAKE_CXXFLAGS += -std=c++11

または

CONFIG += c++11
31
Sherlock

ALiの優れた答えで述べられた両方のケースを処理するための代替手段として、私は通常追加します

# With C++11 support
greaterThan(QT_MAJOR_VERSION, 4){    
CONFIG += c++11
} else {
QMAKE_CXXFLAGS += -std=c++0x
}

私のプロジェクトファイルに。これは、チームで使用しているQtのバージョンがあまり気にされない場合に便利ですが、いずれの場合もC++ 11を有効にしてもらいたいです。

19
Яois

qmakeファイルに追加する

QMAKE_CXXFLAGS+= -std=c++11
QMAKE_LFLAGS +=  -std=c++11
7
guardezi

以前のバージョンのQT(<5)を使用している場合はこれを試してください。

QMAKE_CXXFLAGS += -std=c++0x
4
asloob

私がうまく機能させた唯一の場所は、検索することです。

...\Qt\{5.9;またはあなたのバージョン}\mingw {53_32;またはあなたのバージョン}\mkspecs\win32-g ++\qmake.conf:

それから行で:

QMAKE_CFLAGS           += -fno-keep-inline-dllexport

編集する

QMAKE_CFLAGS           += -fno-keep-inline-dllexport -std=c++11
1
Bretzelus