vcpkg_проверка_features
Проверьте, является ли одна или несколько функций частью установки пакета.
Использование
vcpkg_check_features(
OUT_FEATURE_OPTIONS <out-var>
[PREFIX <prefix>]
[FEATURES
[<feature-name> <feature-var>]...
]
[INVERTED_FEATURES
[<feature-name> <feature-var>]...
]
)
Значение <out-var>
должно быть задано по соглашению FEATURE_OPTIONS
.
vcpkg_check_features()
Будет:
- для каждого
<feature-name>
переданного вFEATURES
:- Значение ON, если эта функция задана, добавьте
-D<feature-var>=ON
<out-var>
и установите<prefix>_<feature-var>
значение ON. - Если функция не задана, добавьте
-D<feature-var>=OFF
<out-var>
и установите значение<prefix>_<feature-var>
OFF.
- Значение ON, если эта функция задана, добавьте
- для каждого
<feature-name>
переданного вINVERTED_FEATURES
:- Значение OFF, если эта функция задана, добавьте
-D<feature-var>=OFF
<out-var>
и установите значение<prefix>_<feature-var>
OFF. - Если функция не задана, добавьте
-D<feature-var>=ON
<out-var>
и установите<prefix>_<feature-var>
значение ON.
- Значение OFF, если эта функция задана, добавьте
Если <prefix>
параметр не передается, набор vars функций просто <feature-var>
не _<feature-var>
передается.
Если INVERTED_FEATURES
не передается, FEATURES
ключевое слово является необязательным.
Такое поведение является устаревшим.
Если одно и то же <feature-var>
значение передается несколько раз, то vcpkg_check_features
это приведет к неустранимой ошибке, так как это ошибка.
Примеры
Пример 1. Обычные функции
$ ./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}
)
Пример 2. Инвертированные функции
$ ./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}
)
Пример 3. Настройка нескольких параметров для одной функции
$ ./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}
)
Пример 4. Использование обычных и инвертированных функций
$ ./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}
)
Примеры в портфайлах
Оригинал
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.