vcpkg_case activée_features
Vérifiez si une ou plusieurs fonctionnalités font partie d’une installation de package.
Utilisation
vcpkg_check_features(
OUT_FEATURE_OPTIONS <out-var>
[PREFIX <prefix>]
[FEATURES
[<feature-name> <feature-var>]...
]
[INVERTED_FEATURES
[<feature-name> <feature-var>]...
]
)
La <out-var>
valeur doit être définie FEATURE_OPTIONS
par convention.
vcpkg_check_features()
sera :
- pour chaque
<feature-name>
passageFEATURES
:- si la fonctionnalité est définie, ajoutez
-D<feature-var>=ON
à<out-var>
et définissez<prefix>_<feature-var>
la valeur ON. - si la fonctionnalité n’est pas définie, ajoutez
-D<feature-var>=OFF
à<out-var>
et définissez<prefix>_<feature-var>
la valeur OFF.
- si la fonctionnalité est définie, ajoutez
- pour chaque
<feature-name>
passageINVERTED_FEATURES
:- si la fonctionnalité est définie, ajoutez
-D<feature-var>=OFF
à<out-var>
et définissez<prefix>_<feature-var>
la valeur OFF. - si la fonctionnalité n’est pas définie, ajoutez
-D<feature-var>=ON
à<out-var>
et définissez<prefix>_<feature-var>
la valeur ON.
- si la fonctionnalité est définie, ajoutez
S’il <prefix>
n’est pas passé, l’ensemble de vars de caractéristiques est simplement <feature-var>
, pas _<feature-var>
.
Si INVERTED_FEATURES
ce n’est pas le cas, le FEATURES
mot clé est facultatif.
Ce comportement est déconseillé.
Si la même <feature-var>
opération est passée plusieurs fois, vcpkg_check_features
une erreur irrécupérable est générée, car il s’agit d’un bogue.
Exemples
Exemple 1 : Fonctionnalités régulières
$ ./vcpkg install mimalloc[asm,secure]
# ports/mimalloc/portfile.cmake
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
asm MI_SEE_ASM
override MI_OVERRIDE
secure MI_SECURE
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
# Expands to "-DMI_SEE_ASM=ON;-DMI_OVERRIDE=OFF;-DMI_SECURE=ON"
${FEATURE_OPTIONS}
)
Exemple 2 : Fonctionnalités inversées
$ ./vcpkg install cpprestsdk[websockets]
# ports/cpprestsdk/portfile.cmake
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
INVERTED_FEATURES
brotli CPPREST_EXCLUDE_BROTLI
websockets CPPREST_EXCLUDE_WEBSOCKETS
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
# Expands to "-DCPPREST_EXCLUDE_BROTLI=ON;-DCPPREST_EXCLUDE_WEBSOCKETS=OFF"
${FEATURE_OPTIONS}
)
Exemple 3 : Définir plusieurs options pour la même fonctionnalité
$ ./vcpkg install pcl[cuda]
# ports/pcl/portfile.cmake
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
cuda WITH_CUDA
cuda BUILD_CUDA
cuda BUILD_GPU
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
# Expands to "-DWITH_CUDA=ON;-DBUILD_CUDA=ON;-DBUILD_GPU=ON"
${FEATURE_OPTIONS}
)
Exemple 4 : Utiliser des fonctionnalités régulières et inversées
$ ./vcpkg install rocksdb[tbb]
# ports/rocksdb/portfile.cmake
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
tbb WITH_TBB
INVERTED_FEATURES
tbb ROCKSDB_IGNORE_PACKAGE_TBB
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
# Expands to "-DWITH_TBB=ON;-DROCKSDB_IGNORE_PACKAGE_TBB=OFF"
${FEATURE_OPTIONS}
)
Exemples dans les fichiers de port
Source
Collaborer avec nous sur GitHub
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner les problèmes et les demandes de tirage. Pour plus d’informations, consultez notre guide du contributeur.