Предупреждение командной строки D9002: игнорирование неизвестной опции '- std=c++11'

в своем CMakeList.txt файл, у меня есть следующее, Чтобы добавить поддержку c++11:

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

Это отлично работает под Mac с Xcode. Однако я получаю следующее предупреждение от Visual Studio. Есть идеи?

предупреждение командной строки D9002: игнорирование неизвестной опции' - std=c++0x'

кроме предупреждения компиляции, программа получает компиляция и запуск без проблем. Я использую VS2013. Если я удалю эту единственную строку "установить флаг", предупреждение исчезнет.

1 ответов


на -std=c++11 опция предназначена только для GCC / CLang, она недоступна в Visual Studio. Поддержка C++ 11 в Visual Studio должна быть включена по умолчанию. Таким образом, вы должны использовать эту опцию Только для 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