vcpkg_チェック_features

1 つ以上の機能がパッケージ インストールの一部であるかどうかを確認します。

使用方法

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() は:

  • 渡されたFEATURES<feature-name>対象:
    • 機能が設定されている場合は、オンに<out-var>追加-D<feature-var>=ONし、オンに設定<prefix>_<feature-var>します。
    • 機能が設定されていない場合は、 -D<feature-var>=OFF 追加して <out-var>OFF に設定 <prefix>_<feature-var> します。
  • 渡されたINVERTED_FEATURES<feature-name>対象:
    • 機能が設定されている場合は、 -D<feature-var>=OFF 追加して <out-var>OFF に設定 <prefix>_<feature-var> します。
    • 機能が設定されていない場合は、 -D<feature-var>=ON 追加して <out-var>ON に設定 <prefix>_<feature-var> します。

渡されない場合 <prefix> 、機能の vars セットは単純 <feature-var>にではなく _<feature-var>

渡されない場合INVERTED_FEATURESFEATURESキーワード (keyword)は省略可能です。 ただし、この動作は非推奨とされます。

同じ <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}
)

ポートファイルの例

ソース

scripts/cmake/vcpkg_チェック_features.cmake