查找OpenSSL¶
找到 OpenSSL 加密库。
该模块查找已安装的 OpenSSL 库并确定其版本。
在 3.19 版本加入: 请求版本时,可以将其指定为简单值或范围。有关版本范围用法和功能的详细说明,请参阅:command:find_package 命令。
在 3.18 版本加入: 支持 OpenSSL 3.0。
可选组件¶
在 3.12 版本加入.
该模块支持两个可选组件:Crypto 和``SSL``。两个组件都有关联的导入目标,如下所述。
进口目标¶
在 3.4 版本加入.
该模块定义了以下 IMPORTED 目标:
OpenSSL::SSLOpenSSL
ssl库,如果找到的话。OpenSSL::加密OpenSSL
crypto库,如果找到的话。OpenSSL::applink在 3.18 版本加入.
可能需要编译到 MSVC 下的项目中的 OpenSSL
applink组件。此目标仅在发现 OpenSSL 版本不低于 0.9.8 时可用。通过链接此目标,即使项目具有与上述 OpenSSL 目标不同的 MSVC 运行时配置,也可以链接上述 OpenSSL 目标。此目标对 MSVC 以外的平台没有影响。
注意:由于 INTERFACE_SOURCES 是如何被消费目标消费的,除非您确实知道自己在做什么,否则始终首选将 OpenSSL::applink 目标链接为 PRIVATE 并使确保对于任何库或可执行文件的整个依赖关系图,此目标最多链接一次:
target_link_libraries(myTarget PRIVATE OpenSSL::applink)
否则,您可能会在构建和链接时遇到意想不到的随机问题,因为 ISO C 和 ISO C++ 标准几乎没有声明链接过程应该是什么。
结果变量¶
该模块将在您的项目中设置以下变量:
OPENSSL_FOUND系统有 OpenSSL 库。如果没有请求任何组件,它只需要加密库。
OPENSSL_INCLUDE_DIROpenSSL 包含目录。
OPENSSL_CRYPTO_LIBRARYOpenSSL 加密库。
OPENSSL_CRYPTO_LIBRARIESOpenSSL 加密库及其依赖项。
OPENSSL_SSL_LIBRARYOpenSSL SSL 库。
OPENSSL_SSL_LIBRARIESOpenSSL SSL 库及其依赖项。
OPENSSL_LIBRARIES所有 OpenSSL 库及其依赖项。
OPENSSL_VERSION这被设置为
$major.$minor.$revision$patch``(例如 ``0.9.8s)。OPENSSL_APPLINK_SOURCE上面提到的目标
OpenSSL::applink中的源。如果发现 openssl 版本低于 0.9.8 或者平台不是 MSVC,则此变量应始终未定义。
提示¶
可以设置以下变量来控制搜索行为:
OPENSSL_ROOT_DIR设置为 OpenSSL 安装的根目录。
OPENSSL_USE_STATIC_LIBS在 3.4 版本加入.
设置为
TRUE以查找静态库。OPENSSL_MSVC_STATIC_RT在 3.5 版本加入.
设置为
TRUE以选择 lib 的 MT 版本。环境{PKG_CONFIG_PATH}在类 UNIX 系统上,
pkg-config用于定位系统 OpenSSL。设置``PKG_CONFIG_PATH`` 环境变量以在备用位置查找。在多库系统上很有用。