FindOpenSSL

查找 OpenSSL 加密库。

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

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

在 3.18 版本中新增:支持 OpenSSL 3.0。

可选的 COMPONENTS

在 3.12 版本中新增。

该模块支持两个可选的 COMPONENTS:CryptoSSL。正如下面描述的,两个组件均具有关联的导入目标。

导入目标

在 3.4 版本中新增。

该模块定义以下 IMPORTED 目标

OpenSSL::SSL

OpenSSL ssl 库(如果找到)。

OpenSSL::Crypto

OpenSSL crypto 库(如果找到)。

OpenSSL::applink

在 3.18 版本中新增。

OpenSSL applink 组件可能需要编译到 MSVC 下的项目中。该目标仅在已找到的 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 库。如果没有请求任何组件,则它只需要 crypto 库。

OPENSSL_INCLUDE_DIR

OpenSSL include 目录。

OPENSSL_CRYPTO_LIBRARY

OpenSSL crypto 库。

OPENSSL_CRYPTO_LIBRARIES

OpenSSL crypto 库及其依赖项。

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 版本中新增。

设置为 TURE 来寻找静态库。

OPENSSL_MSVC_STATIC_RT

3.5 版本中添加。

设置为 TRUE 来选择库的 MT 版本。

ENV{PKG_CONFIG_PATH}

在 UNIX 类系统上,pkg-config 用于定位系统 OpenSSL。设置 PKG_CONFIG_PATH 环境变量将在其他位置进行查找。在多库系统上很有用。