Vérifiez mineur gcc CMake
-
27-09-2019 - |
Question
Est-il possible de vérifier le numéro de version mineure de GCC dans CMake?
Je veux faire quelque chose comme ceci:
If (GCC_MAJOR >= 4 && GCC_MINOR >= 3)
La solution
Utilisation if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
comme mentionné par onqtam. Cette réponse obsolète était de retour des 2,6 jours CMake.
vous pouvez exécuter gcc -dumpversion
et analyser la sortie. Voici une façon de le faire:
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()
Ce imprimerait "4" et "3" pour la version gcc 4.3.1. Cependant, vous pouvez utiliser la version de CMake vérification de la syntaxe pour rendre la vie un peu plus facile et sauter les choses regex:
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()
Autres conseils
Depuis CMake 2.8.10 il y a les variables CMAKE_C_COMPILER_VERSION
et CMAKE_CXX_COMPILER_VERSION
exactement à cet effet afin que vous puissiez faire ceci:
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
En combinant les 2 autres réponses, vous pouvez vérifier la version de gcc spécifique comme suit:
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.1)
...
endif()
Cependant, il y a un argument, -dumpfullversion
qui fournit la chaîne de la version complète.
gcc -dumpfullversion
devrait obtenir ce que vous voulez. Toujours rétrocompatibilité est cassé dans gcc 7.