web-dev-qa-db-ja.com

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

CLionでC++ 11コードを実行しようとしていますが、機能しません。それは言う:

...
    /projects/CLion/untitled/main.cpp:7:1: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11
...

CMAKE_C_FLAGSから-std=c++11または-std=gnu++11しかし、私は同じ問題をまだ抱えています。通常のC++コードは正常にコンパイルされます。

C++ 11コードをコンパイルするには、CLionのCMakeウィンドウでどのフラグを設定する必要がありますか?

14
Pavel

CMAKE_C_FLAGSを設定してみた

ドキュメント によると、CMAKE_C_FLAGSはすべてのC-言語フラグを設定します ビルドタイプ 。 C++の場合は、代わりにCMAKE_CXX_FLAGSを使用する必要があります。

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
22
Gluttton

CMake 3.1以降では、 CMAKE_CXX_STANDARD変数11に設定できます。

ターゲットのCXX_STANDARDプロパティのデフォルト値。

この変数は、すべてのターゲットのCXX_STANDARDプロパティを初期化するために使用されます。

CXX_STANDARDドキュメント

このターゲットをビルドするために機能が要求されるC++標準。

このプロパティは、このターゲットをビルドするために機能が要求されるC++標準を指定します。一部のコンパイラでは、これにより-std=gnu++11などのフラグがコンパイル行に追加されます。

サポートされている値は98、11、および14です。

要求された値によって、使用中のコンパイラーにコンパイルフラグが追加されない場合は、代わりに以前の標準フラグが追加されます。これは、以下を使用することを意味します:

set_property(TARGET tgt PROPERTY CXX_STANDARD 11)

-std=gnu++11または同等のフラグをサポートしないコンパイラでは、エラーや警告は発生しませんが、サポートされている場合は代わりに-std=gnu++98フラグが追加されます。この「減衰」動作は CXX_STANDARD_REQUIRED ターゲットプロパティで制御できます。

コンパイル機能については、 cmake-compile-features(7) マニュアルを参照してください。

このプロパティは、ターゲットの作成時に設定されている場合、CMAKE_CXX_STANDARD変数の値によって初期化されます。

10
Casey