N'importe quel moyen dans CMake d'exiger GCC version 4+?
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.
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.