You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:44:58