다음을 통해 공유


vcpkg_검사_features

하나 이상의 기능이 패키지 설치의 일부인지 확인합니다.

사용

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() 다음을 수행합니다.

  • 에 전달된 각 <feature-name> FEATURES
    • 기능이 설정되고, 추가 -D<feature-var>=ON<out-var>되고, ON으로 설정 <prefix>_<feature-var> 되면 입니다.
    • 기능이 설정되지 않은 경우 ,에 <out-var>추가하고 -D<feature-var>=OFF OFF로 설정합니다<prefix>_<feature-var>.
  • 에 전달된 각 <feature-name> INVERTED_FEATURES
    • 기능이 설정되고, 추가 -D<feature-var>=OFF<out-var>되고, OFF로 설정 <prefix>_<feature-var> 되면
    • 기능이 설정되어 있지 않으면 <out-var>추가하고 -D<feature-var>=ON ON으로 설정합니다<prefix>_<feature-var>.

전달되지 않으면 <prefix> 기능 vars 집합이 단순히 <feature-var>아니라 _<feature-var>.

전달 FEATURES 되지 않으면 INVERTED_FEATURES 키워드(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