vcpkg_check_features
Überprüfen Sie, ob eine oder mehrere Features Teil einer Paketinstallation sind.
Verwendung
vcpkg_check_features(
OUT_FEATURE_OPTIONS <out-var>
[PREFIX <prefix>]
[FEATURES
[<feature-name> <feature-var>]...
]
[INVERTED_FEATURES
[<feature-name> <feature-var>]...
]
)
Dies <out-var>
sollte nach Konvention festgelegt FEATURE_OPTIONS
werden.
vcpkg_check_features()
Wird:
- für jeden
<feature-name>
übergebenen:FEATURES
- wenn das Feature festgelegt ist, fügen Sie
-D<feature-var>=ON
es hinzu<out-var>
, und legen Sie es auf "EIN" fest<prefix>_<feature-var>
. - wenn das Feature nicht festgelegt ist, fügen Sie
-D<feature-var>=OFF
es hinzu<out-var>
, und legen Sie es auf OFF fest<prefix>_<feature-var>
.
- wenn das Feature festgelegt ist, fügen Sie
- für jeden
<feature-name>
übergebenen:INVERTED_FEATURES
- wenn das Feature festgelegt ist, fügen Sie
-D<feature-var>=OFF
es hinzu<out-var>
, und legen Sie es auf OFF fest<prefix>_<feature-var>
. - wenn das Feature nicht festgelegt ist, fügen Sie
-D<feature-var>=ON
es hinzu<out-var>
, und legen Sie es auf EIN fest<prefix>_<feature-var>
.
- wenn das Feature festgelegt ist, fügen Sie
Wenn <prefix>
nicht übergeben wird, sind die Feature vars set einfach <feature-var>
, nicht _<feature-var>
.
Wenn INVERTED_FEATURES
sie nicht übergeben wird, ist die FEATURES
Schlüsselwort (keyword) optional.
Dieses Verhalten ist als veraltet markiert.
Wenn dasselbe <feature-var>
mehrmals übergeben wird, vcpkg_check_features
wird ein schwerwiegender Fehler verursacht, da dies ein Fehler ist.
Beispiele
Beispiel 1: Reguläre Features
$ ./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}
)
Beispiel 2: Invertierte Features
$ ./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}
)
Beispiel 3: Festlegen mehrerer Optionen für das gleiche Feature
$ ./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}
)
Beispiel 4: Verwenden regulärer und umgekehrter Features
$ ./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}
)
Beispiele in Portfiles
Quelle
Zusammenarbeit auf GitHub
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.