在我的 CMakeList.txt 文件中,我有以下内容以添加c ++ 11支持:
set(CMAKE_CXX_FLAGS" $ {CMAKE_CXX_FLAGS} -std = c ++ 11")
这在使用Xcode的Mac下正常工作。但是,我从Visual Studio收到以下警告消息。任何的想法?
命令行警告D9002:忽略未知选项' -std = c ++ 0x'
除编译警告外,程序编译运行没有问题。我正在使用VS2013。如果我删除那个单词" set flag"线,警告消失了。
答案 0 :(得分:8)
-std=c++11
选项仅适用于GCC / CLang,在Visual Studio中不可用。默认情况下,应打开Visual Studio中的C ++ 11支持。因此,您应该仅对类似GCC的编译器使用此选项:
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()
如果您使用的是最新版本的CMake,您可能会尝试使用新的编译器功能机制:http://www.cmake.org/cmake/help/v3.1/manual/cmake-compile-features.7.html
答案 1 :(得分:1)
Microsoft Visual Studio编译器(MSVC)拥有自己的set of compiler flags。 简而言之:解决此问题的方法是使用以下命令,而不是您使用的命令。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
答案 2 :(得分:1)
对于C ++ 11,使用target_compile_features来使CMake添加正确的编译器标志,无论您使用的是哪个编译器
target_compile_features(mylibrary PRIVATE cxx_std_11)
或
set(CMAKE_CXX_STANDARD 11)