FindCURL¶
查找用于通过 URL 传输数据的原生 curl 安装(包含目录和库)。
3.17 版本新增: 如果 curl 使用其基于 CMake 的构建系统构建,它将提供自己的 CMake 包配置文件(CURLConfig.cmake
),以便与find_package()
命令在配置模式下使用。默认情况下,此模块会搜索此文件,如果找到,则直接返回结果而无需进一步操作。如果未找到上游配置文件,此模块将回退到模块模式并搜索标准位置。
3.13 版本新增: 调试和发布库变体分别查找。
组件¶
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::libcurl
3.12 版本新增。
封装 curl 使用要求的目标,在找到 curl 时可用。
结果变量¶
此模块定义了以下变量
CURL_FOUND
布尔值,指示是否找到(请求版本的)curl 和所有必需的组件。
CURL_VERSION
4.0 版本新增。
找到的 curl 版本。此变量取代
CURL_VERSION_STRING
。CURL_<component>_FOUND
3.14 版新增。
布尔值,指示是否找到指定的组件(curl 协议或功能)。
CURL_INCLUDE_DIRS
包含
curl/curl.h
和使用 curl 所需的其他头文件的包含目录。注意
当通过配置模式找到 curl 时,此变量仅在 curl 8.9 或更新版本中可用。
CURL_LIBRARIES
使用 curl 进行链接所需的库列表。
注意
当通过模块模式找到 curl 时,这是一个库文件路径列表。在配置模式下,此变量仅在 curl 8.9 或更新版本中可用,并包含导入目标的列表。
提示¶
此模块接受以下变量
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 库并将其链接到项目目标
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()