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
)