Используйте if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
, как указано в onqtam.Этот устаревший ответ вернулся с 2,6 CMake days.
Вы можете запустить gcc -dumpversion
и проанализировать вывод.Вот один из способов сделать это:
if (CMAKE_COMPILER_IS_GNUCC)
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION)
string(REGEX MATCHALL "[0-9]+" GCC_VERSION_COMPONENTS ${GCC_VERSION})
list(GET GCC_VERSION_COMPONENTS 0 GCC_MAJOR)
list(GET GCC_VERSION_COMPONENTS 1 GCC_MINOR)
message(STATUS ${GCC_MAJOR})
message(STATUS ${GCC_MINOR})
endif()
Это выведет «4» и «3» для gcc версии 4.3.1.Однако вы можете использовать синтаксис проверки версии CMake, чтобы немного упростить жизнь, и пропустить регулярные выражения:
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION)
if (GCC_VERSION VERSION_GREATER 4.3 OR GCC_VERSION VERSION_EQUAL 4.3)
message(STATUS "Version >= 4.3")
endif()