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


167

タイトルはかなりわかりやすいです。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をサポートしています。どうすれば有効にできますか?


3
Qt Creatorはコンパイラではありません。「Qt CreatorがC ++ 11をサポートしている」と読むと、コード補完エンジン(この場合はClang)がC ++ 11構文をサポートしていることを意味します。
cmannett85 2013年

@ cmannett85 Qt CreatorはまだClangをC ++構文パーサーとして使用していません。努力はありましたが、ClangのAPIとこのソリューションの一般的なパフォーマンスがこれを遅らせました。この方向での現在の作業はここにあります
rubenvb 2014年

回答:


261

このサイトによると追加

CONFIG += c++11

.proファイルに追加します(そのWebページの下部を参照)。Qt 5が必要です。


他の答えは、示唆しています

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

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


4
匿名の反対投票は誰にも役立たない。答えの何が問題になっていますか?
アリ

問題は、私があなたの重複/不完全な回答を削除することができなかったことでした。見やすくするために編集したので、反対票だけで満足です。
ヌレッティン2014

9
@nurettinフィードバックをありがとう。回答(私のものなど)の編集履歴を注意深く調べると、私の元の回答が重複していないことがわかります。実際、私の回答の一部を恥知らずに盗んで、私の回答を複製のように見せたのは、もう1つの回答でした。その後、今年はさらに2つの回答が出ました。編集履歴でご確認ください。この情報を踏まえて、あなたの反対票を再考しますか?
アリ

3
@Troysephこれが私の状況の理解です。私はあなたがgccを使っていると仮定しています。gccのバージョンがをサポートしている場合は、-std=c++11(非推奨の)-std=c++0xフラグもサポートする必要があり、両方のフラグが同じ効果を持っていると思われます(お使いのマシンでは明らかにそうではありません)。コンパイラがをサポートしている場合でも -std=c++0x、それが理解しているとは限りません-std=c++11。したがって、-std=c++0xC ++ 11互換モードのデフォルトとして選択するのが妥当な選択です。私のマシンでは、少なくとも、manページによると-std=c++0x-std=c++11同じです。
Ali

1
@Troysephさて、-std=c++11コンパイラーがサポートしているなら使うほうが良いのは事実であり、Qtはそうするのに十分賢いかもしれません。まあ、この問題があなたにそれほど痛いのなら、あなたはバグ報告を提出することができます...
Ali


18

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

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

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


これは-std = c ++ 11
Predrag Manojlovic

8

qmakeファイルに追加

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

4

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

QMAKE_CXXFLAGS += -std=c++0x

1

私が正常に機能させる唯一の場所は、次の場所を検索することです。

... \ 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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.