Question

J'utilise certaines fonctionnalités fournies dans GCC v4 + et j'aimerais que CMake trouve le compilateur GCC v4 et, s'il ne le trouve pas, renvoie une erreur indiquant que GCC v4 est requis.

Quelqu'un a des modules / idées sur la façon de faire quelque chose comme ça?

Merci.

Était-ce utile?

La solution

Utilisez la commande try_compile () et essayez de compiler le programme suivant

#if __GNUC__ != 4
#error
#endif
int main() { return 0; }

Autres conseils

Une façon totalement différente (pas nécessairement meilleure) d'implémenter une vérification de version de gcc serait quelque chose du genre:

if(CMAKE_COMPILER_IS_GNUCXX)
  exec_program(
      ${CMAKE_CXX_COMPILER}
      ARGS                    --version
      OUTPUT_VARIABLE _compiler_output)
  string(REGEX REPLACE ".* ([0-9]\\.[0-9]\\.[0-9]) .*" "\\1"
         gcc_compiler_version ${_compiler_output})
  message(STATUS "C++ compiler version: ${gcc_compiler_version} [${CMAKE_CXX_COMPILER}]")

  if(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
    message(FATAL_ERROR "foobar")
    ...

  if(gcc_compiler_version VERSION_GREATER "4.5.99")
  ...
...

Il pourrait bientôt y avoir une solution dans cmake lui-même, cf. http://cmake.3232098.n2.nabble.com/GCC -compiler-version-td7185771.html

Les futures versions de cmake pourraient inclure deux variables: CMAKE_C_COMPILER_VERSION et CMAKE_CXX_COMPILER_VERSION .

Halas, je ne les ai pas encore vus dans le journal des modifications 2.8.8.

J'utilise la solution @cmaker pour le moment.

Il existe également le fichier de chaîne d'outils, qui est mentionné sur le wiki vtk . Cela vous permet de spécifier des chaînes d'outils personnalisées. Il est généralement utilisé pour la compilation croisée, mais je l’avais déjà utilisé auparavant pour faire fonctionner d’autres chaînes d’outils.

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