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 包含目录。

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

设置为 TRUE 以查找静态库。

OPENSSL_MSVC_STATIC_RT

3.5 版本新增。

设置为 TRUE 以选择 MT 版本的 lib。

ENV{PKG_CONFIG_PATH}

在类 UNIX 系统上,使用 pkg-config 来定位系统 OpenSSL。 设置 PKG_CONFIG_PATH 环境变量以在备用位置查找。 在多库系统上很有用。