gpt4 book ai didi

安卓CMake : Could NOT find OpenSSL

转载 作者:行者123 更新时间:2023-11-28 01:44:00 36 4
gpt4 key购买 nike

我对使用 NDK/CMake 的 Android 还很陌生。但是,我正在尝试将 native CMake 库嵌入到 Android 应用程序中。但是,这个库依赖于 OpenSSL。

这就是我下载 Android 版 OpenSSL 预编译版本的原因。

但是,当我尝试同步项目时,出现以下错误:

 Could NOT find OpenSSL, try to set the path to OpenSSL root folder
in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES)
(found version "1.1.0f")

这是我的(最小)项目结构

<app-name>
-app
- src
- main
- cpp
- library
- CMakeLists.txt
CMakeLists.txt
- distribution
- openssl
- armeabi
- include
- openssl
...
- lib
libcrypto.a, libssl.a

在我的 build.gradle 中,我定义了以下内容:

externalNativeBuild {
cmake {
path 'src/main/cpp/CMakeLists.txt'
}
}

/app/src/main/cpp/CmakeLists.txt 如下所示:

cmake_minimum_required(VERSION 3.4.1)


set(distribution_DIR ${CMAKE_SOURCE_DIR}/../../../../distribution)

set(OPENSSL_ROOT_DIR ${distribution_DIR}/openssl/${ANDROID_ABI})
set(OPENSSL_LIBRARIES "${OPENSSL_ROOT_DIR}/lib")
set(OPENSSL_INCLUDE_DIR ${OPENSSL_ROOT_DIR}/include)


message("OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES}")
message("OPENSSL_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR}")

find_package(OpenSSL REQUIRED)


add_subdirectory(library)

最佳答案

find_package(...) 在几个标准位置搜索库(阅读 here - 搜索“在 cmake 中指定的搜索路径”)。在您的情况下,它失败了,因为它无法在您尝试交叉编译 Android 代码的机器上找到 OpenSSL。

我知道我也有过各种尝试将 OpenSSL 与我的 native c++ Android 代码链接起来,而我设法让它工作的唯一方法如下:

SET(distribution_DIR ${CMAKE_SOURCE_DIR}/../../../../distribution)
SET(OPENSSL_ROOT_DIR ${distribution_DIR}/openssl/${ANDROID_ABI})

SET(OPENSSL_LIBRARIES_DIR "${OPENSSL_ROOT_DIR}/lib")
SET(OPENSSL_INCLUDE_DIR ${OPENSSL_ROOT_DIR}/include)
SET(OPENSSL_LIBRARIES "ssl" "crypto")


#<----Other cmake code/defines here--->

LINK_DIRECTORIES(${OPENSSL_LIBRARIES_DIR})

ADD_LIBRARY(library #your other params here#)

TARGET_INCLUDE_DIRECTORIES(library PUBLIC ${OPENSSL_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(library ${OPENSSL_LIBRARIES})

我知道我也尝试过使用它的一些配置属性(例如 CMAKE_FIND_ROOT_PATH)和其他一些方法让 find_package 正常工作,但我无法完成它。

不知道我提供的解决方案是否是最好的方法,cmake-wise。也许有人有更好的方法,但是,唉,它解决了我当时的问题。

希望对你有帮助

关于安卓CMake : Could NOT find OpenSSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45958214/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com