命令行警告D9002:忽略未知选项'-std = c ++ 11'

Yuc*_*ong 8 cmake compiler-warnings c++11 visual-studio-2013

在我的CMakeList.txt文件中,我有以下内容以添加c ++ 11支持:

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

这在使用Xcode的Mac下工作正常.但是,我从Visual Studio收到以下警告消息.任何的想法?

命令行警告D9002:忽略未知选项'-std = c ++ 0x'

除编译警告外,程序编译运行没有问题.我正在使用VS2013.如果我删除该单个"设置标志"行,则警告消失.

jet*_*t47 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()
Run Code Online (Sandbox Code Playgroud)

如果您使用的是最新版本的CMake,您可能会尝试使用新的编译器功能机制:http://www.cmake.org/cmake/help/v3.1/manual/cmake-compile-features.7.html

  • / std:[c ++ 14 | c ++ 17 | c ++ latest]怎么样?https://docs.microsoft.com/zh-cn/cpp/build/reference/std-specify-language-standard-version (2认同)