cmake
Kompilera funktioner och C / C ++ standardval
Sök…
Syntax
- target_compile_features ( target PRIVATE | PUBLIC | INTERFACE feature1 [ feature2 ...])
Kompilera funktionskrav
Nödvändiga kompilatorfunktioner kan specificeras på ett mål med kommandot target_compile_features :
add_library(foo
foo.cpp
)
target_compile_features(foo
PRIVATE # scope of the feature
cxx_constexpr # list of features
)
Funktionerna måste vara en del av CMAKE_C_COMPILE_FEATURES eller CMAKE_CXX_COMPILE_FEATURES ; cmake rapporterar ett fel annars. Cmake lägger till alla nödvändiga flaggor som -std=gnu++11
till målets sammanställningsalternativ.
I exemplet förklaras PRIVATE
: kraven kommer att läggas till målet, men inte till dess kunder. För att automatiskt lägga till kraven i en målbyggnad mot foo, PUBLIC
eller INTERFACE
användas istället för 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
)
Val av C / C ++
Önskad version för C och C ++ kan specificeras globalt med respektive variabler CMAKE_C_STANDARD
(accepterade värden är 98, 99 och 11) och CMAKE_CXX_STANDARD
(accepterade värden är 98, 11 och 14):
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)
Dessa lägger till de nödvändiga sammanställningsalternativen för mål (t.ex. -std=c++11
för gcc).
Versionen kan göras ett krav genom att ställa in ON
på variablerna CMAKE_C_STANDARD_REQUIRED
respektive CMAKE_CXX_STANDARD_REQUIRED
.
Variablerna måste ställas in innan mål skapas. Versionen kan också anges per mål:
set_target_properties(foo PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)