Est-il un moyen pour que cmake détecter automatiquement si un compilateur prend en charge le C++11 ou pas?
Comme il serait bon d'informer les utilisateurs lors de l'cmake exécuter que le code ne compilera pas que le compilateur n'a pas de support de C++11. Au moment où j'ai mis le C++11 drapeaux toutefois, si un compilateur ne supporte pas l'utilisateur d'avoir des erreurs de compilation au lieu d'une erreur au cours de la cmake exécuter.
Parfait serait quelque chose qui travail comme find_package()
cependant, je n'ai pas trouvé de module de la fonction, qui fournit les fonctionnalités nécessaires.
De plus il serait bien d'avoir la fonctionnalité pour détecter si le compilateur a besoin de l'drapeaux std=c++0x
ou std=c++11
.
Est-il quelque chose de disponible ou n'ai-je besoin de développer cela sur mon propre?
Voici quelque code que j'utilise jusqu'à présent, toutefois, il ne fonctionne qu'avec GNU gcc compilateurs. Ce serait bien si il y aurait plus de solution générale.
if(CMAKE_COMPILER_IS_GNUCXX)
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)
message(STATUS "C++11 activated.")
add_definitions("-std=gnu++11")
elseif(GCC_VERSION VERSION_GREATER 4.3 OR GCC_VERSION VERSION_EQUAL 4.3)
message(WARNING "C++0x activated. If you get any errors update to a compiler which fully supports C++11")
add_definitions("-std=gnu++0x")
else ()
message(FATAL_ERROR "C++11 needed. Therefore a gcc compiler with a version higher than 4.3 is needed.")
endif()
else(CMAKE_COMPILER_IS_GNUCXX)
add_definitions("-std=c++0x")
endif(CMAKE_COMPILER_IS_GNUCXX)