我正在使用支持集成CMake 3.8的VS 15.3。如何在不为每个特定编译器编写标志的情况下针对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++latest")
我希望CMake在生成VS解决方案文件时添加"/std:c++latest"或相应的选项,但没有找到c++17标志,导致编译器错误:
C1189 #error: class template optional is only available with C++17.
std::optional
特性,如果我在 CMakeLists 中手动添加"/std:c++lastest"
标志,则可以使用它。 - MiPcmake
。 - Basile Starynkevitch