cmake
Fonctions de compilation et sélection standard C / C ++
Recherche…
Syntaxe
- target_compile_features (cible PRIVÉ | PUBLIC | INTERFACE feature1 [feature2 ...])
Compiler les conditions requises
Les fonctions de compilation requises peuvent être spécifiées sur une cible à l'aide de la commande target_compile_features :
add_library(foo
foo.cpp
)
target_compile_features(foo
PRIVATE # scope of the feature
cxx_constexpr # list of features
)
Les fonctionnalités doivent faire partie de CMAKE_C_COMPILE_FEATURES ou CMAKE_CXX_COMPILE_FEATURES ; cmake signale une erreur sinon. Cmake ajoutera les options nécessaires telles que -std=gnu++11
aux options de compilation de la cible.
Dans l'exemple, les fonctionnalités sont déclarées PRIVATE
: les exigences seront ajoutées à la cible, mais pas à ses consommateurs. Pour ajouter automatiquement les exigences à un bâtiment cible par rapport à foo, vous devez utiliser PUBLIC
ou INTERFACE
au lieu de 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
)
Sélection de version C / C ++
Les versions CMAKE_C_STANDARD
pour C et C ++ peuvent être spécifiées globalement en utilisant respectivement les variables CMAKE_C_STANDARD
(les valeurs acceptées sont 98, 99 et 11) et CMAKE_CXX_STANDARD
(les valeurs acceptées sont 98, 11 et 14):
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)
Celles-ci ajouteront les options de compilation nécessaires sur les cibles (par exemple, -std=c++11
pour gcc).
La version peut être rendue obligatoire en définissant sur ON
les variables CMAKE_C_STANDARD_REQUIRED
et CMAKE_CXX_STANDARD_REQUIRED
respectivement.
Les variables doivent être définies avant la création de la cible. La version peut également être spécifiée par cible:
set_target_properties(foo PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)