Чи є спосіб дозволити CMake визначати автоматично, якщо компілятор підтримує C ++ 11 чи ні?
Оскільки було б непогано повідомити користувачів під час запуску CMake, що код не буде компілюватися, оскільки компілятор не підтримує C ++ 11. На даний момент я встановив прапори C ++ 11. Однак, якщо компілятор цього не підтримує, користувач отримує помилки компіляції замість помилки під час запуску CMake.
Ідеальним буде те, що працює як find_package()
. Однак я не знайшов жодного модуля чи функції, які забезпечують необхідну функціональність.
Додатково було б непогано мати функцію для виявлення, якщо компілятору потрібні прапори std=c++0x
або std=c++11
.
Чи є щось доступне, чи мені це потрібно розробити самостійно?
Нижче наведено деякий код, який я використовую досі, проте він працює лише з компіляторами GNU'c GCC. Було б непогано, якби було більш загальне рішення.
if(CMAKE_COMPILER_IS_GNUCXX)
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)
message(STATUS "C++11 activated.")
add_definitions("-std=gnu++11")
elseif(GCC_VERSION VERSION_GREATER 4.3 OR GCC_VERSION VERSION_EQUAL 4.3)
message(WARNING "C++0x activated. If you get any errors update to a compiler which fully supports C++11")
add_definitions("-std=gnu++0x")
else ()
message(FATAL_ERROR "C++11 needed. Therefore a gcc compiler with a version higher than 4.3 is needed.")
endif()
else(CMAKE_COMPILER_IS_GNUCXX)
add_definitions("-std=c++0x")
endif(CMAKE_COMPILER_IS_GNUCXX)
add_definitions
команду замість налаштуванняCMAKE_CXX_FLAGS
для встановлення параметрів компілятора?