Compruebe gcc minor en cmake
build cross-platform (4)
¿Es posible verificar el número de versión menor de GCC en cmake?
Quiero hacer algo como esto:
If (GCC_MAJOR >= 4 && GCC_MINOR >= 3)
Combinando las otras 2 respuestas, puede verificar la versión específica de gcc de la siguiente manera:
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.1)
...
endif()
Desde CMake 2.8.10 existen las variables CMAKE_C_COMPILER_VERSION
y CMAKE_CXX_COMPILER_VERSION
exactamente para este propósito, por lo que puede hacer esto:
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
Sin embargo, hay un argumento, -dumpfullversion
que proporciona la cadena de versión completa.
gcc -dumpfullversion
Debería conseguir lo que quiere. Aún la compatibilidad con versiones anteriores está rota en gcc 7.
Utilice if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
como lo menciona onqtam. Esta respuesta obsoleta regresó de los 2.6 días del día.
Puedes ejecutar gcc -dumpversion
y analizar la salida.Aquí hay una forma de hacerlo:
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()
Eso imprimiría "4" y "3" para la versión 4.3.1 de gcc. Sin embargo, puede usar la sintaxis de comprobación de versiones de CMake para hacer la vida un poco más fácil y omitir las cosas de expresiones regulares:
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()