vcpkg_check_features
Sprawdź, czy co najmniej jedna funkcja jest częścią instalacji pakietu.
Sposób użycia
vcpkg_check_features(
OUT_FEATURE_OPTIONS <out-var>
[PREFIX <prefix>]
[FEATURES
[<feature-name> <feature-var>]...
]
[INVERTED_FEATURES
[<feature-name> <feature-var>]...
]
)
Element <out-var>
powinien być ustawiony zgodnie FEATURE_OPTIONS
z konwencją.
vcpkg_check_features()
Będzie:
- dla każdego
<feature-name>
przekazanego elementu :FEATURES
- Jeśli funkcja jest ustawiona, dodaj
-D<feature-var>=ON
element do<out-var>
elementu i ustaw wartość<prefix>_<feature-var>
WŁ. - Jeśli funkcja nie jest ustawiona, dodaj
-D<feature-var>=OFF
element do<out-var>
elementu i ustaw wartość<prefix>_<feature-var>
OFF.
- Jeśli funkcja jest ustawiona, dodaj
- dla każdego
<feature-name>
przekazanego elementu :INVERTED_FEATURES
- jeśli funkcja jest ustawiona, dodaj
-D<feature-var>=OFF
element do<out-var>
elementu i ustaw wartość<prefix>_<feature-var>
OFF. - Jeśli funkcja nie jest ustawiona, dodaj
-D<feature-var>=ON
element do<out-var>
elementu i ustaw wartość<prefix>_<feature-var>
WŁ.
- jeśli funkcja jest ustawiona, dodaj
Jeśli <prefix>
nie zostanie przekazana, zestaw wariancjach funkcji to po prostu <feature-var>
, a nie _<feature-var>
.
Jeśli INVERTED_FEATURES
nie zostanie przekazana, FEATURES
słowo kluczowe jest opcjonalne.
To zachowanie jest przestarzałe.
Jeśli to samo <feature-var>
jest przekazywane wiele razy, vcpkg_check_features
spowoduje to błąd krytyczny, ponieważ jest to usterka.
Przykłady
Przykład 1. Zwykłe funkcje
$ ./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}
)
Przykład 2. Odwrócone funkcje
$ ./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}
)
Przykład 3. Ustawianie wielu opcji dla tej samej funkcji
$ ./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}
)
Przykład 4. Używanie zwykłych i odwróconych funkcji
$ ./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}
)
Przykłady w plikach portów
Źródło
Współpracuj z nami w serwisie GitHub
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.