FindOpenSSL¶
查找 OpenSSL 加密库。
此模块查找已安装的 OpenSSL 库并确定其版本。
3.19 版本新增: 当请求版本时,可以指定为简单值或范围。 有关版本范围用法和功能的详细描述,请参阅 find_package()
命令。
3.18 版本新增: 支持 OpenSSL 3.0。
可选 COMPONENTS¶
3.12 版本新增。
此模块支持两个可选的 COMPONENTS:Crypto
和 SSL
。 两个组件都有相关的导入目标,如下所述。
导入目标¶
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
环境变量以在备用位置查找。 在多库系统上很有用。