Freigeben über


vcpkg_check_features

Überprüfen Sie, ob eine oder mehrere Features Teil einer Paketinstallation sind.

Verwendung

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

Dies <out-var> sollte nach Konvention festgelegt FEATURE_OPTIONS werden.

vcpkg_check_features() Wird:

  • für jeden <feature-name> übergebenen:FEATURES
    • wenn das Feature festgelegt ist, fügen Sie -D<feature-var>=ON es hinzu <out-var>, und legen Sie es auf "EIN" fest <prefix>_<feature-var> .
    • wenn das Feature nicht festgelegt ist, fügen Sie -D<feature-var>=OFF es hinzu <out-var>, und legen Sie es auf OFF fest <prefix>_<feature-var> .
  • für jeden <feature-name> übergebenen:INVERTED_FEATURES
    • wenn das Feature festgelegt ist, fügen Sie -D<feature-var>=OFF es hinzu <out-var>, und legen Sie es auf OFF fest <prefix>_<feature-var> .
    • wenn das Feature nicht festgelegt ist, fügen Sie -D<feature-var>=ON es hinzu <out-var>, und legen Sie es auf EIN fest <prefix>_<feature-var> .

Wenn <prefix> nicht übergeben wird, sind die Feature vars set einfach <feature-var>, nicht _<feature-var>.

Wenn INVERTED_FEATURES sie nicht übergeben wird, ist die FEATURES Schlüsselwort (keyword) optional. Dieses Verhalten ist als veraltet markiert.

Wenn dasselbe <feature-var> mehrmals übergeben wird, vcpkg_check_features wird ein schwerwiegender Fehler verursacht, da dies ein Fehler ist.

Beispiele

Beispiel 1: Reguläre Features

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

Beispiel 2: Invertierte Features

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

Beispiel 3: Festlegen mehrerer Optionen für das gleiche Feature

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

Beispiel 4: Verwenden regulärer und umgekehrter Features

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

Beispiele in Portfiles

Quelle

scripts/cmake/vcpkg_check_features.cmake