Windows下用CMake+FetchContent构建带HTTPS支持的libcurl故障排查
CMake构建libcurl不支持HTTPS及OpenSSL查找疑问
1. libcurl不支持HTTPS问题
项目中使用的CMake脚本如下:
cmake_minimum_required (VERSION 3.20) set(PROJECT_NAME CurlSomething) project(${PROJECT_NAME}) find_package(OpenSSL REQUIRED) message("OpenSSL include dir: " ${OPENSSL_INCLUDE_DIR}) message("OpenSSL include dir: " ${OPENSSL_LIBRARIES}) include(FetchContent) # Needs to be included first FetchContent_Declare(curl URL https://github.com/curl/curl/releases/download/curl-8_1_2/curl-8.1.2.zip ) FetchContent_MakeAvailable(curl) FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz ) FetchContent_MakeAvailable(json) set(SRC_FILES main.cpp ) set(INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR} ${CURL_SOURCE_DIR}/include ) set(LINK_LIBRARIES ) message("Curl src dir: " ${curl_SOURCE_DIR}) add_executable (${PROJECT_NAME} ${SRC_FILES}) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 23) include_directories(${INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARIES}) target_link_libraries(${PROJECT_NAME} PRIVATE libcurl nlohmann_json::nlohmann_json)
OpenSSL已安装在默认路径,CMake能正确识别OPENSSL_INCLUDE_DIR和OPENSSL_LIBRARIES,但构建出的libcurl仍不支持HTTPS,运行时报错:Protocol "https" not supported or disabled in libcurl。曾尝试添加以下编译定义,但无效:
add_compile_definitions(USE_WINDOWS_SSPI) add_compile_definitions(USE_SCHANNEL)
2. CMake查找OpenSSL的疑问
未配置相关环境变量、CMAKE_MODULE_PATH,也未手动提供FindOpenSSL.cmake文件,CMake是如何找到已安装的OpenSSL的?
更新说明
已自行编译x64版本的OpenSSL,未指定编译器或目标系统,仅执行以下命令构建:
cmake .. cmake --build .
且可执行文件目录中已存在libcurl动态链接库。
内容的提问来源于stack exchange,提问作者SavedowW
相关产品推荐
相关产品推荐

