Проблема с find_package(cpr) и CURL в CMake при использовании Vcpkg в Visual Studio

Я столкнулся с очень странной проблемой при попытке использовать библиотеку cpr в моем CMake-проекте, который я разрабатываю в Visual Studio 2022 и управляю зависимостями с помощью Vcpkg.

При попытке сконфигурировать проект с помощью CMake возникает ошибка

Could NOT find CURL (missing: CURL_INCLUDE_DIR).

Это происходит несмотря на то, что cpr должна подтягивать CURL как свою зависимость через Vcpkg, и, насколько я понимаю, Vcpkg успешно установил cpr (и, следовательно, CURL).

cmake_minimum_required (VERSION 3.8)
project ("ArchiveDownloader")
add_executable (ArchiveDownloader "ArchiveDownloader.cpp" "ArchiveDownloader.h")
if (CMAKE_VERSION VERSION_GREATER 3.12)
    set_property(TARGET ArchiveDownloader PROPERTY CXX_STANDARD 17)
endif()
find_package(cpr CONFIG
    PATHS "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/vcpkg/installed/x64-windows/share/cpr"
    NO_DEFAULT_PATH
    OPTIONAL_COMPONENTS CURL # Пытался сделать CURL необязательным
    REQUIRED
)
if (cpr_FOUND)
    message(STATUS "cpr found (CONFIG mode)")
    message(STATUS "cpr_DIR: ${cpr_DIR}")
    message(STATUS "cpr_LIBRARIES: ${cpr_LIBRARIES}")
else()
    message(FATAL_ERROR "cpr not found (CONFIG mode)")
endif()
target_link_libraries (ArchiveDownloader PRIVATE cpr::cpr)

Я также пробовал различные варианты, включая:

  1. Явное указание путей к заголовочным файлам и библиотекам CURL (include_directories, link_directories) до вызова find_package(cpr).
  2. Добавление префикса Vcpkg в CMAKE_PREFIX_PATH.
  3. Явное указание пути к папке с конфигурацией cpr.
  4. Переустановку CMake и Vcpkg.
  5. Удаление кэша CMake.

Полный вывод CMake при запуске:

cmake .. -DCMAKE_TOOLCHAIN_FILE="C:/Program Files/Microsoft Visual Studio/2022/Community/VC/vcpkg/scripts/buildsystems/vcpkg.cmake" -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 17 2022" -A x64 **выводит:**

-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.26100.
-- The C compiler identification is MSVC 19.43.34810.0
-- The CXX compiler identification is MSVC 19.43.34810.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found ZLIB: optimized;C:/Program Files/Microsoft Visual Studio/2022/Community/VC/vcpkg/installed/x64-windows/lib/zlib.lib;debug;C:/Program Files/Microsoft Visual Studio/2022/Community/VC/vcpkg/installed/x64-windows/debug/lib/zlibd.lib (found suitable version "1.3.1", minimum required is "1")
-- cpr found (CONFIG mode)
-- cpr_DIR: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/vcpkg/installed/x64-windows/share/cpr
-- cpr_LIBRARIES:
-- Configuring done
-- Generating done
-- Build files have been written to: D:/MyCPP/ArchiveDownloader/build

Дополнительная информация:

Операционная система: Windows 11
Версия Visual Studio: 2022 Community
Версия CMake: 3.24.2
Версия Vcpkg: vcpkg 2025-04-16-f9b6c6917b23c1ccf16c1a9f015ebabf8f615045

Я использую Toolchain File Vcpkg (-DCMAKE_TOOLCHAIN_FILE=C:/Program Files/Microsoft Visual Studio/2022/Community/VC/vcpkg/scripts/buildsystems/vcpkg.cmake). Интеграция Vcpkg в Visual Studio, по сообщениям, прошла успешно. Несмотря на все мои попытки, я постоянно получаю ошибку, связанную с отсутствием CURL. Я предполагаю, что проблема может быть связана с тем, как Findcpr.cmake ищет свои зависимости в среде Vcpkg, или с какой-то особенностью моей конфигурации.

Буду очень благодарен за любую помощь или подсказки в решении этой проблемы! Возможно, кто-то сталкивался с подобной ситуацией или знает, как правильно настроить поиск зависимостей cpr при использовании Vcpkg. Спасибо!


Ответы (0 шт):