cmake
Funzionalità di compilazione e selezione standard C / C ++
Ricerca…
Sintassi
- target_compile_features ( target PRIVATE | PUBLIC | INTERFACE feature1 [ feature2 ...])
Compilare Requisiti di Caratteristica
Le caratteristiche del compilatore richieste possono essere specificate su una destinazione utilizzando il comando target_compile_features :
add_library(foo
foo.cpp
)
target_compile_features(foo
PRIVATE # scope of the feature
cxx_constexpr # list of features
)
Le funzionalità devono essere parte di CMAKE_C_COMPILE_FEATURES o CMAKE_CXX_COMPILE_FEATURES ; altrimenti cmake segnala un errore. Cmake aggiungerà eventuali flag necessari come -std=gnu++11
alle opzioni di compilazione del target.
Nell'esempio, le funzionalità sono dichiarate PRIVATE
: i requisiti verranno aggiunti all'obiettivo, ma non ai suoi utenti. Per aggiungere automaticamente i requisiti a un edificio target contro foo, è necessario utilizzare PUBLIC
o INTERFACE
anziché 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
)
Selezione della versione C / C ++
La versione ricercata per C e C ++ può essere specificata globalmente utilizzando rispettivamente le variabili CMAKE_C_STANDARD
(i valori accettati sono 98, 99 e 11) e CMAKE_CXX_STANDARD
(i valori accettati sono 98, 11 e 14):
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)
Questi aggiungeranno le opzioni di compilazione necessarie sugli obiettivi (es. -std=c++11
per gcc).
La versione può essere resa obbligatoria impostando su ON
le variabili CMAKE_C_STANDARD_REQUIRED
e CMAKE_CXX_STANDARD_REQUIRED
rispettivamente.
Le variabili devono essere impostate prima della creazione del target. La versione può anche essere specificata per target:
set_target_properties(foo PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)