Partager via


vcpkg_case activée_features

Vérifiez si une ou plusieurs fonctionnalités font partie d’une installation de package.

Utilisation

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

La <out-var> valeur doit être définie FEATURE_OPTIONS par convention.

vcpkg_check_features() sera :

  • pour chaque <feature-name> passage FEATURES:
    • si la fonctionnalité est définie, ajoutez -D<feature-var>=ON à <out-var>et définissez <prefix>_<feature-var> la valeur ON.
    • si la fonctionnalité n’est pas définie, ajoutez -D<feature-var>=OFF à <out-var>et définissez <prefix>_<feature-var> la valeur OFF.
  • pour chaque <feature-name> passage INVERTED_FEATURES:
    • si la fonctionnalité est définie, ajoutez -D<feature-var>=OFF à <out-var>et définissez <prefix>_<feature-var> la valeur OFF.
    • si la fonctionnalité n’est pas définie, ajoutez -D<feature-var>=ON à <out-var>et définissez <prefix>_<feature-var> la valeur ON.

S’il <prefix> n’est pas passé, l’ensemble de vars de caractéristiques est simplement <feature-var>, pas _<feature-var>.

Si INVERTED_FEATURES ce n’est pas le cas, le FEATURES mot clé est facultatif. Ce comportement est déconseillé.

Si la même <feature-var> opération est passée plusieurs fois, vcpkg_check_features une erreur irrécupérable est générée, car il s’agit d’un bogue.

Exemples

Exemple 1 : Fonctionnalités régulières

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

Exemple 2 : Fonctionnalités inversées

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

Exemple 3 : Définir plusieurs options pour la même fonctionnalité

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

Exemple 4 : Utiliser des fonctionnalités régulières et inversées

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

Exemples dans les fichiers de port

Source

scripts/cmake/vcpkg_case activée_features.cmake