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)
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top