vcpkg_check_features
Verifique se um ou mais recursos fazem parte de uma instalação de pacote.
Uso
vcpkg_check_features(
OUT_FEATURE_OPTIONS <out-var>
[PREFIX <prefix>]
[FEATURES
[<feature-name> <feature-var>]...
]
[INVERTED_FEATURES
[<feature-name> <feature-var>]...
]
)
O <out-var>
deve ser definido FEATURE_OPTIONS
por convenção.
vcpkg_check_features()
vontade:
- para cada
<feature-name>
passagem emFEATURES
:- se o recurso estiver definido, adicione
-D<feature-var>=ON
a<out-var>
e defina<prefix>_<feature-var>
como ATIVADO. - se o recurso não estiver definido, adicione
-D<feature-var>=OFF
a<out-var>
e defina<prefix>_<feature-var>
como OFF.
- se o recurso estiver definido, adicione
- para cada
<feature-name>
passagem emINVERTED_FEATURES
:- se o recurso estiver definido, adicione
-D<feature-var>=OFF
a<out-var>
e defina<prefix>_<feature-var>
como OFF. - se o recurso não estiver definido, adicione
-D<feature-var>=ON
a<out-var>
e defina<prefix>_<feature-var>
como ON.
- se o recurso estiver definido, adicione
Se <prefix>
não for aprovado, então o conjunto de vars de recursos são simplesmente <feature-var>
, não _<feature-var>
.
Se INVERTED_FEATURES
não for aprovada, a FEATURES
palavra-chave será opcional.
Este comportamento é preterido.
Se o mesmo <feature-var>
for passado várias vezes, então vcpkg_check_features
causará um erro fatal, já que isso é um bug.
Exemplos
Exemplo 1: Recursos regulares
$ ./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}
)
Exemplo 2: Recursos invertidos
$ ./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}
)
Exemplo 3: Definir várias opções para o mesmo recurso
$ ./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}
)
Exemplo 4: Usar recursos regulares e invertidos
$ ./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}
)
Exemplos em portfiles
Origem
Colaborar conosco no GitHub
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.