CMake und CXX_STANDARD
In CMake kann man definieren, mit welchem C++-Standard das Projekt gebaut werden soll. Dazu wird die Eigenschaft CXX_STANDARD für ein bestimmtes Target geändert. Das kann z.B. so geschrieben werden:
set_property(TARGET executable_name PROPERTY CXX_STANDARD 11)
Das kann man an einem einfachen Beispiel auch sehen. Wenn die Beispiel CMakeLists.txt so aussieht:
project(cxx_standard_ex1) set(SOURCES main.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11)
und die dann mit den Befehlen
cmake -G "Unix Makefiles" . make VERBOSE=1
aufgerufen werden, dann sieht man in der Ausgabe, dass die Quelltextdatei main.cpp mit einem anderen C++-Standard kompiliert wird:
/usr/bin/c++ -std=gnu++11 -o CMakeFiles/cxx_standard_ex1.dir/main.o -c /project/cxx_standard/main.cpp