FindCURL¶
查找本地 curl 安装(包含目录和库),用于通过 URL 传输数据
find_package(CURL [<version>] [COMPONENTS <components>...] [...])
版本 3.17 中新增: 如果 curl 是使用其基于 CMake 的构建系统构建的,它将提供自己的 CMake 包配置文件(CURLConfig.cmake),供在配置模式下与 find_package() 命令一起使用。默认情况下,此模块会搜索此文件,如果找到,则在不采取进一步操作的情况下返回结果。如果找不到上游配置文件,此模块将回退到模块模式并搜索标准位置。
版本 3.13 中新增: Debug 和 Release 库变体将单独查找。
组件¶
3.14 版新增。
此模块支持可选组件,用于检测已安装 curl 中可用的协议和功能(这些可能因 curl 版本而异)
Protocols: DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS IPFS IPNS
LDAP LDAPS MQTT POP3 POP3S RTMP RTMPS RTSP SCP SFTP SMB SMBS SMTP
SMTPS TELNET TFTP WS WSS
Features: alt-svc asyn-rr AsynchDNS brotli CAcert Debug ECH gsasl GSS-API
HSTS HTTP2 HTTP3 HTTPS-proxy HTTPSRR IDN IPv6 Kerberos Largefile
libz MultiSSL NTLM NTLM_WB PSL SPNEGO SSL SSLS-EXPORT SSPI
threadsafe TLS-SRP TrackMemory Unicode UnixSockets zstd
组件可以与 find_package() 命令一起指定,这些组件是 curl 被视为找到所必需的
find_package(CURL [COMPONENTS <protocols>... <features>...])
或者选择性地进行检查,从而允许在代码中进行条件处理
find_package(CURL [OPTIONAL_COMPONENTS <protocols>... <features>...])
有关支持的协议和功能的更多信息,请参阅 curl 文档。组件名称区分大小写,并遵循上游 curl 命名约定。
导入的目标¶
此模块提供以下 导入目标
CURL::libcurl3.12 版本新增。
封装 curl 用法需求的 Target,如果找到 curl 则可用。
结果变量¶
此模块定义了以下变量
CURL_FOUND布尔值,指示是否找到了 curl(请求的版本)以及所有必需的组件。
CURL_VERSION4.0 版本新增。
找到的 curl 的版本。此变量取代了
CURL_VERSION_STRING。CURL_<component>_FOUND3.14 版新增。
布尔值,指示是否找到了指定的组件(curl 协议或功能)。
CURL_INCLUDE_DIRS包含
curl/curl.h和使用 curl 所需的其他头文件的包含目录。注意
当通过配置模式找到 curl 时,此变量仅对 curl 版本 8.9 或更高版本可用。
CURL_LIBRARIES链接使用 curl 所需的库列表。
注意
当通过模块模式找到 curl 时,这是一个库文件路径列表。在配置模式下,此变量仅对 curl 版本 8.9 或更高版本可用,并且包含一个导入 Target 列表。
提示¶
此模块接受以下变量
CURL_NO_CURL_CMAKE在 3.17 版本中添加。
将此变量设置为
TRUE可禁用通过配置模式搜索 curl。CURL_USE_STATIC_LIBS版本 3.28 新增。
将此变量设置为
TRUE以使用静态库。仅当 curl 未通过配置模式找到时才有意义。
已弃用变量¶
以下变量提供用于向后兼容性
CURL_VERSION_STRING版本 4.0 中已弃用: 已被
CURL_VERSION取代。找到的 curl 的版本。
示例¶
查找 curl 库并指定所需的最低版本
find_package(CURL 7.61.0)
查找 curl 库并将其链接到项目 Target
find_package(CURL)
target_link_libraries(project_target PRIVATE CURL::libcurl)
使用组件检查找到的 curl 是否支持特定协议或功能
find_package(CURL OPTIONAL_COMPONENTS HTTPS SSL)
if(CURL_HTTPS_FOUND)
# curl supports the HTTPS protocol
endif()
if(CURL_SSL_FOUND)
# curl has SSL feature enabled
endif()