2011-08-15 4 views
1

Utiliser autoconf/automake comment trouver la version de GCC sur le système? Pour obtenir la version Python installée, vous devez utiliser AM_PATH_PYTHON, puis la variable PYTHON_VERSION sera disponible. Y a-t-il quelque chose de similaire pour la version GCC?Trouver la version de GCC

(Aussi, est-il possible d'obtenir le majeur, le niveau mineur et le patch de gcc?)

+1

Que ferez-vous si gcc n'est même pas installé? –

+2

Cry. Personnellement, je ne supporte pas les compilateurs non-gcc (et dans la communauté de physique je ne pense pas que ce soit un gros problème.) – VolatileStorm

Répondre

3

Une recherche rapide révèle la ax_gcc_version macro qui devrait vous donner la variable GCC_VERSION. Malheureusement, cette macro dépend de AX_GCC_OPTION qui a été récemment deprecated in favour of de AX_*_CHECK_FLAG.

Ce mailing list post suggère un patch pour ax_gcc_version ce qui revient à:

AC_DEFUN([AX_GCC_VERSION], [ 
    GCC_VERSION="" 
    AX_CHECK_COMPILE_FLAG([-dumpversion], 
    [ax_gcc_version_option=yes], 
    [ax_gcc_version_option=no]) 

    AS_IF([test "x$GCC" = "xyes"],[ 
    AS_IF([test "x$ax_gcc_version_option" != "xno"],[ 
     AC_CACHE_CHECK([gcc version],[ax_cv_gcc_version],[ 
     ax_cv_gcc_version="`$CC -dumpversion`" 
     AS_IF([test "x$ax_cv_gcc_version" = "x"],[ 
      ax_cv_gcc_version="" 
     ]) 
     ]) 
     GCC_VERSION=$ax_cv_gcc_version 
    ]) 
    ]) 
    AC_SUBST([GCC_VERSION]) 
]) 

Je n'ai pas testé, mais il semble raisonnable.


(Aussi, est-il possible d'obtenir le majeur, le niveau mineur et le patch de gcc?)

Une fois que vous avez la chaîne de version en GCC_VERSION, vous pouvez diviser manuellement la chaîne à obtenir les versions majeure, mineure et patch. Voici une solution simple:

GCC_VERSION_MAJOR=$(echo $GCC_VERSION | cut -d'.' -f1) 
GCC_VERSION_MINOR=$(echo $GCC_VERSION | cut -d'.' -f2) 
GCC_VERSION_PATCH=$(echo $GCC_VERSION | cut -d'.' -f3) 
+0

J'ai une question: pourquoi auriez-vous besoin de mettre en cache la valeur dans 'ax_cv_gcc_version' et ensuite le régler' GCC_VERSION' à ça? – Bionix1441

Questions connexes