Sdílet prostřednictvím


vcpkg_check_features

Zkontrolujte, jestli je jedna nebo více funkcí součástí instalace balíčku.

Využití

vcpkg_check_features(
    OUT_FEATURE_OPTIONS <out-var>
    [PREFIX <prefix>]
    [FEATURES
        [<feature-name> <feature-var>]...
        ]
    [INVERTED_FEATURES
        [<feature-name> <feature-var>]...
        ]
)

Měla by být nastavena <out-var>FEATURE_OPTIONS podle konvence.

vcpkg_check_features() Bude:

  • pro každý <feature-name> předaný v FEATURES:
    • pokud je tato funkce nastavená, přidejte -D<feature-var>=ON ji do <out-var>a nastavte <prefix>_<feature-var> na ZAPNUTO.
    • pokud tato funkce není nastavená, přidejte -D<feature-var>=OFF ji do <out-var>a nastavte <prefix>_<feature-var> na VYPNUTO.
  • pro každý <feature-name> předaný v INVERTED_FEATURES:
    • pokud je tato funkce nastavená, přidejte -D<feature-var>=OFF ji do <out-var>a nastavte <prefix>_<feature-var> na VYPNUTO.
    • pokud tato funkce není nastavená, přidejte -D<feature-var>=ON ji do <out-var>a nastavte na ZAPNUTO <prefix>_<feature-var> .

Pokud <prefix> se nepředá, sada var funkcí je jednoduše <feature-var>, ne _<feature-var>.

Pokud INVERTED_FEATURES se nepředá, FEATURES je klíčové slovo volitelné. Toto chování je zastaralé.

Pokud se to stejné <feature-var> předává vícekrát, způsobí vcpkg_check_features závažnou chybu, protože se jedná o chybu.

Příklady

Příklad 1: Běžné funkce

$ ./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}
)

Příklad 2: Invertované funkce

$ ./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}
)

Příklad 3: Nastavení více možností pro stejnou funkci

$ ./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}
)

Příklad 4: Použití běžných a invertovaných funkcí

$ ./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}
)

Příklady v souborech portů

Source

scripts/cmake/vcpkg_check_features.cmake