首页 > 解决方案 > CMake 前向清除库 (OpenSSL)

问题描述

我下载了 janbar 的 OpenSSL Cmake,以便能够交叉编译我的 OpenSSL 代码(更正确的是我使用需要 OpenSSL 的 Curl)。我将 OpenSSL CMake 作为独立运行,它编译得很好,我从中得到了一些库和可执行文件。然后我想将它包含到我的项目中,起初我只是添加了我使用 CMakefiles 提取 OpenSSL 的文件夹,如下所示:add_subdirectory(openssl). 这不起作用,因为find_package(OpenSSL)会抱怨:

Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY, missing: OPENSSL_INCLUDE_DIR) (found version "1.1.1g")

在这里,我做了一些“糟糕”的 CMake,因为我知道包含文件夹在哪里以及库的去向,所以我在 OpenSSL Cmake 结束时这样做了:

set(OPENSSL_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include" CACHE PATH "Path to include dir")
set(OPENSSL_CRYPTO_LIBRARY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libcrypto.lib")

配置时,这给了我一个类似的错误:

Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found version "1.1.1g")

find 函数似乎对我的包含感到满意,但它仍然抱怨找不到 Crypto 库。我知道在构建 OpenSSL 时会创建加密 .lib 文件。我之前在 FindPackage 由于查找错误位置或尚未创建文件的位置而失败的其他项目上已经完成了此“前向声明”。我不确定它为什么会失败,因为我过去在这方面取得了成功(尽管不推荐这样做)。

我会喜欢一些可能出错的指针,但如果一些指针让它按我想要的方式工作会更好:使用 CMake 将 OpenSSL 与我的项目一起编译。

提前致谢。

标签: cmakeopenssl

解决方案


推荐阅读