Gibt es eine Möglichkeit, CMake automatisch erkennen zu lassen, ob ein Compiler C ++ 11 unterstützt oder nicht?
Es wäre schön, die Benutzer während des CMake-Laufs darüber zu informieren, dass der Code nicht kompiliert wird, da der Compiler C ++ 11 nicht unterstützt. Im Moment habe ich die C ++ 11 Flags gesetzt. Wenn ein Compiler dies jedoch nicht unterstützt, erhält der Benutzer Kompilierungsfehler anstelle eines Fehlers während des CMake-Laufs.
Perfekt wäre etwas, das funktioniert find_package()
. Ich habe jedoch kein Modul oder keine Funktion gefunden, die die erforderliche Funktionalität bietet.
Zusätzlich wäre es schön, die Funktion zu haben, um zu erkennen, ob der Compiler die Flags std=c++0x
oder benötigt std=c++11
.
Ist etwas verfügbar oder muss ich es selbst entwickeln?
Unten ist ein Code, den ich bisher verwende, der jedoch nur mit GNU'c GCC-Compilern funktioniert. Es wäre schön, wenn es eine allgemeinere Lösung gäbe.
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)
add_definitions
Befehl anstelle der Einstellung verwendenCMAKE_CXX_FLAGS
, um die Compileroptionen festzulegen?