Проблема с 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)
Я также пробовал различные варианты, включая:
- Явное указание путей к заголовочным файлам и библиотекам
CURL (include_directories, link_directories)до вызоваfind_package(cpr). - Добавление префикса
VcpkgвCMAKE_PREFIX_PATH. - Явное указание пути к папке с конфигурацией
cpr. - Переустановку
CMakeиVcpkg. - Удаление кэша
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.
Спасибо!