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
)


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow