cmake
Compileer functies en C / C ++ standaardselectie
Zoeken…
Syntaxis
- target_compile_features ( target PRIVATE | PUBLIC | INTERFACE feature1 [ feature2 ...])
Compileer Functie-eisen
Vereiste compilerfuncties kunnen op een doel worden opgegeven met de opdracht target_compile_features :
add_library(foo
foo.cpp
)
target_compile_features(foo
PRIVATE # scope of the feature
cxx_constexpr # list of features
)
De functies moeten onderdeel zijn van CMAKE_C_COMPILE_FEATURES of CMAKE_CXX_COMPILE_FEATURES ; cmake meldt anders een fout. Cmake zal alle benodigde vlaggen zoals -std=gnu++11
aan de compileeropties van het doel.
In het voorbeeld worden de functies PRIVATE
verklaard: de vereisten worden toegevoegd aan het doel, maar niet aan de consumenten. Om de vereisten automatisch toe te voegen aan een doelgebouw tegen foo, moet PUBLIC
of INTERFACE
worden gebruikt in plaats van 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 ++ versie selectie
De gewenste versie voor C en C ++ kan globaal worden opgegeven met behulp van respectievelijk variabelen CMAKE_C_STANDARD
(geaccepteerde waarden zijn 98, 99 en 11) en CMAKE_CXX_STANDARD
(geaccepteerde waarden zijn 98, 11 en 14):
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)
Hiermee worden de benodigde compileeropties voor doelen toegevoegd (bijvoorbeeld -std=c++11
voor gcc).
De versie kan een eis worden gemaakt door het instellen naar ON
de variabelen CMAKE_C_STANDARD_REQUIRED
en CMAKE_CXX_STANDARD_REQUIRED
respectievelijk.
De variabelen moeten worden ingesteld voordat het doel wordt gemaakt. De versie kan ook per doel worden gespecificeerd:
set_target_properties(foo PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)