我使用VS 15.3,它支持集成的CMake 3.8。如何在不爲每個特定編譯器編寫標誌的情況下定位C++ 17?我目前的全局設置不起作用:如何在CMake中啓用C++ 17
# https://cmake.org/cmake/help/latest/prop_tgt/CXX_STANDARD.html
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# expected behaviour
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++lastest")
我預想的CMake添加「/ STD:C++最新的」生成VS解決方案文件時或等價物,但沒有C++ 17層的標誌被發現,導致編譯器錯誤:
C1189 #error: class template optional is only available with C++17.
CMake的一般不會消除需要寫標誌爲每個特定的編譯器。 – VTT
「VS 15.3」是否指Visual Studio 2017預覽版3?或者你的意思是Visual Studio 2015更新3(如果有的話,它不支持C++ 17)? –
@Someprogrammerdude我正在使用'std :: optional'特性,如果我手動向CMakeLists添加'「/ std:C++ lastest」''標誌,可以使用這些特性。 – MiP