2017-07-29 18 views
1

新しいCLionプロジェクトを作成してC++ 17言語標準を選択すると、C++ 17コードはコンパイルされません。CLion、CMake、VS2017コンパイラを使用したC++のコンパイル

add_compile_options(/std:c++latest) 

はこれです:

cmake_minimum_required(VERSION 3.8) 
project(optional2) 
set(CMAKE_CXX_STANDARD 17) 
set(SOURCE_FILES main.cpp) 
add_executable(optional2 ${SOURCE_FILES}) 

私はCMakeLists.txtファイルに次の行を追加する必要がありましたC++ 17のコードをコンパイルするには、次のよう 初期CMakeLists.txtファイルがありますこのコンパイルオプションをCMAKE/CLionに追加するには正しい方法(そして/または唯一の方法?)

使用しているC++コンパイラは、CLion 2017.2を実行しているWindows 10ワークステーションでnmake.exeを持つvs2017 cl.exeです。

+0

Visual Studioは、実際にはC++ 17をサポートしていません。この執筆時点でMSDNの[C++ 11/14/17の機能(Modern C++)](https://msdn.microsoft.com/en-us/library/hh567368.aspx)も参照してください。実際にはC++ 11やC++ 14もサポートしていません。私たちはMSDNで宣伝されているサポートマトリックスに基づいていくつかの変更を行いました。バグレポートやクラッシュレポートも掲載されました。 – jww

+1

[CMakeを使用してVS2017で有効/有効にする方法](https://stackoverflow.com/questions/44960715/how-to-enable-stdc17-in-vs2017-with-cmake) – Florian

答えて

1

CMAKE_CXX_STANDARD変数は、CXX_STANDARDプロパティを初期化するために使用されます。プロパティのドキュメントから

:などMSVCなどの標準的なレベルの概念を持っていないコンパイラについては、

、 これは効果がありません。平野CMakeの、C++ 17のための標準的な方法(デフォルトではC++ 14である)でのVisual Studio 2017の場合

です:

target_compile_options(optional2 PRIVATE /std:c++latest) 
+1

ありがとうございました;私は 'add_executable(optional2 $ {SOURCE_FILES})'ステートメントの後にステートメントを置くことで動作します。 – sethmc

+0

@ SethCurryこれは予想通りです。 add_executableを呼び出すまでターゲット 'optional2'は存在しません –

関連する問題