Как определить поддержку C ++ 11 компилятора с CMake

Есть ли способ позволить CMake автоматически определять, поддерживает ли компилятор C ++ 11 или нет?

Как было бы неплохо сообщить пользователям во время запуска CMake, что код не будет компилироваться, так как компилятор не поддерживает C ++ 11. На данный момент я установил флаги C ++ 11. Однако, если компилятор не поддерживает его, пользователь получает ошибки компиляции вместо ошибки во время запуска CMake.

Идеальным было бы то, что работает какfind_package(), Однако я не нашел ни одного модуля или функции, которые бы обеспечивали необходимую функциональность.

Дополнительно было бы неплохо иметь возможность определять, нужны ли компилятору флагиstd=c++0x или жеstd=c++11.

Есть ли что-то доступное или мне нужно разработать это самостоятельно?

Ниже приведен код, который я использую до сих пор, однако он работает только с компиляторами GCC GNU. Было бы неплохо, если бы было более общее решение.

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)

Ответы на вопрос(7)

Ваш ответ на вопрос