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

问题描述 投票:8回答:2

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

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

[在Mac上使用Xcode时效果很好。但是,我从Visual Studio中收到以下警告消息。任何想法?

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

除编译警告外,程序可以正常编译并运行。我正在使用VS2013。如果我删除那条“设置标志”行,则警告消失。

c++11 visual-studio-2013 cmake compiler-warnings
2个回答
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


0
投票

Microsoft Visual Studio编译器(MSVC)拥有自己的set of compiler flags。简而言之:解决此问题的解决方案是使用以下命令,而不是您使用的命令。

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
© www.soinside.com 2019 - 2024. All rights reserved.