命令行警告 D9002:忽略未知选项“-std=c++11”
Command line warning D9002: ignoring unknown option '-std=c++11'
在我的 CMakeList.txt 文件中,为了添加 c++11 支持,我有以下内容:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
这在 Mac 和 Xcode 下工作正常。但是,我从 Visual Studio 收到以下警告消息。任何的想法?
Command line warning D9002: ignoring unknown option '-std=c++0x'
除了编译警告之外,程序编译和 运行 没有问题。我正在使用 VS2013。如果我删除那条 "set flag" 行,警告就会消失。
-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
Microsoft Visual Studio 编译器 (MSVC) 拥有自己的 set of compiler flags。
简而言之:解决此问题的方法是使用以下命令而不是您使用的命令。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
使用 target_compile_features 让 CMake 添加正确的编译器标志,适用于 C++ 11,适用于您使用的任何编译器
target_compile_features(mylibrary PRIVATE cxx_std_11)
或
set(CMAKE_CXX_STANDARD 11)
在我的 CMakeList.txt 文件中,为了添加 c++11 支持,我有以下内容:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
这在 Mac 和 Xcode 下工作正常。但是,我从 Visual Studio 收到以下警告消息。任何的想法?
Command line warning D9002: ignoring unknown option '-std=c++0x'
除了编译警告之外,程序编译和 运行 没有问题。我正在使用 VS2013。如果我删除那条 "set flag" 行,警告就会消失。
-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
Microsoft Visual Studio 编译器 (MSVC) 拥有自己的 set of compiler flags。 简而言之:解决此问题的方法是使用以下命令而不是您使用的命令。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
使用 target_compile_features 让 CMake 添加正确的编译器标志,适用于 C++ 11,适用于您使用的任何编译器
target_compile_features(mylibrary PRIVATE cxx_std_11)
或
set(CMAKE_CXX_STANDARD 11)