cmake
Kompilieren Sie Funktionen und die C / C ++ - Standardauswahl
Suche…
Syntax
- target_compile_features ( target PRIVATE | PUBLIC | INTERFACE feature1 [ feature2 ...])
Funktionsanforderungen kompilieren
Erforderliche Compiler-Features können mit dem Befehl target_compile_features auf einem Ziel angegeben werden :
add_library(foo
foo.cpp
)
target_compile_features(foo
PRIVATE # scope of the feature
cxx_constexpr # list of features
)
Die Funktionen müssen Bestandteil von CMAKE_C_COMPILE_FEATURES oder CMAKE_CXX_COMPILE_FEATURES sein . Ansonsten meldet cmake einen Fehler. Cmake fügt den Kompilierungsoptionen des Ziels alle erforderlichen Flags wie -std=gnu++11 .
In dem Beispiel werden die Features als PRIVATE deklariert: Die Anforderungen werden dem Ziel hinzugefügt, nicht jedoch seinen Verbrauchern. Um die Anforderungen automatisch zu einem Zielgebäude gegen foo hinzuzufügen, sollte PUBLIC oder INTERFACE anstelle von PRIVATE :
target_compile_features(foo
PUBLIC # this time, required as public
cxx_constexpr
)
add_executable(bar
main.cpp
)
target_link_libraries(bar
foo # foo's public requirements and compile flags are added to bar
)
C / C ++ - Versionsauswahl
Die gewünschte Version für C und C ++ kann mit den Variablen CMAKE_C_STANDARD ( CMAKE_C_STANDARD Werte sind 98, 99 und 11) und CMAKE_CXX_STANDARD ( CMAKE_CXX_STANDARD Werte sind 98, 11 und 14) global angegeben werden:
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)
-std=c++11 werden die erforderlichen Kompilierungsoptionen für Ziele -std=c++11 (z. B. -std=c++11 für gcc).
Die Version kann als Anforderung festgelegt werden, indem die Variablen CMAKE_C_STANDARD_REQUIRED und CMAKE_CXX_STANDARD_REQUIRED auf ON CMAKE_CXX_STANDARD_REQUIRED werden.
Die Variablen müssen vor der Zielerstellung festgelegt werden. Die Version kann auch pro Ziel angegeben werden:
set_target_properties(foo PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)