vcpkg_check_features
Compruebe si una o varias características forman parte de una instalación de paquetes.
Uso
vcpkg_check_features(
OUT_FEATURE_OPTIONS <out-var>
[PREFIX <prefix>]
[FEATURES
[<feature-name> <feature-var>]...
]
[INVERTED_FEATURES
[<feature-name> <feature-var>]...
]
)
Debe <out-var>
establecerse FEATURE_OPTIONS
en por convención.
vcpkg_check_features()
será:
- para cada una de las
<feature-name>
pasadas enFEATURES
:- si se establece la característica, agregue
-D<feature-var>=ON
a<out-var>
y establezca en<prefix>_<feature-var>
ACTIVADO. - si la característica no está establecida, agregue
-D<feature-var>=OFF
a<out-var>
y establezca en<prefix>_<feature-var>
OFF.
- si se establece la característica, agregue
- para cada una de las
<feature-name>
pasadas enINVERTED_FEATURES
:- si la característica está establecida, agregue
-D<feature-var>=OFF
a<out-var>
y establezca en<prefix>_<feature-var>
OFF. - si la característica no está establecida, agregue
-D<feature-var>=ON
a<out-var>
y establezca en<prefix>_<feature-var>
ACTIVADO.
- si la característica está establecida, agregue
Si <prefix>
no se pasa, el conjunto de vars de características es simplemente <feature-var>
, no _<feature-var>
.
Si INVERTED_FEATURES
no se pasa, la FEATURES
palabra clave es opcional.
Este comportamiento se ha desaprobado.
Si se pasa lo mismo <feature-var>
varias veces, vcpkg_check_features
se producirá un error irrecuperable, ya que es un error.
Ejemplos
Ejemplo 1: Características normales
$ ./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}
)
Ejemplo 2: Características invertidas
$ ./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}
)
Ejemplo 3: Establecimiento de varias opciones para la misma característica
$ ./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}
)
Ejemplo 4: Uso de características normales e invertidas
$ ./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}
)
Ejemplos en portfiles
Source
Colaborar con nosotros en GitHub
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.