1. ホーム
  2. c++11

[解決済み】CMakeでC++ 11を有効にするには?

2022-03-24 14:58:38

質問

CMakeで生成したmakefileを実行してプログラムをコンパイルしようとすると、次のようなエラーが発生します。

範囲ベースの for ループは C++ 98 モードではサポートされていません。

を追加してみました。 add_definitions(-std=c++0x) に、私の CMakeLists.txt しかし、それは役に立ちませんでした。

これも試してみました。

if(CMAKE_COMPILER_IS_GNUCXX)
    add_definitions(-std=gnu++0x)
endif()

をすると g++ --version を取得します。

g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

私はまた、試してみました。 SET(CMAKE_CXX_FLAGS "-std=c++0x") これもうまくいきません。

CMakeを使用してC++ 11の機能を有効にする方法がわかりません。

解決方法を教えてください。

結論から言うと SET(CMAKE_CXX_FLAGS "-std=c++0x") は、多くのC++11の機能を有効にします。うまくいかなかったのは、このような文になっていたためです。

set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS} -g -ftest-coverage -fprofile-arcs")

この方法に従って、なぜか -std=c++0x のフラグが上書きされてしまい、うまくいきませんでした。フラグを1つずつ設定するか、リストメソッドを使用するとうまくいきます。

list( APPEND CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS} -g -ftest-coverage -fprofile-arcs")