查找OpenSSL

找到 OpenSSL 加密库。

该模块查找已安装的 OpenSSL 库并确定其版本。

在 3.19 版本加入: 请求版本时,可以将其指定为简单值或范围。有关版本范围用法和功能的详细说明,请参阅:command:find_package 命令。

在 3.18 版本加入: 支持 OpenSSL 3.0。

可选组件

在 3.12 版本加入.

该模块支持两个可选组件:Crypto 和``SSL``。两个组件都有关联的导入目标,如下所述。

进口目标

在 3.4 版本加入.

该模块定义了以下 IMPORTED 目标:

OpenSSL::SSL

OpenSSL 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_DIR

OpenSSL 包含目录。

OPENSSL_CRYPTO_LIBRARY

OpenSSL 加密库。

OPENSSL_CRYPTO_LIBRARIES

OpenSSL 加密库及其依赖项。

OPENSSL_SSL_LIBRARY

OpenSSL SSL 库。

OPENSSL_SSL_LIBRARIES

OpenSSL 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`` 环境变量以在备用位置查找。在多库系统上很有用。