gpt4 book ai didi

android - 从 Android Studio/CMake 中的子模块导入自己的本地共享库

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:28 26 4
gpt4 key购买 nike

我有一个包含 2 个模块的 Android Studio (2.3) 项目,使用 CMake 作为 native 代码。

Project
--> Module1 (app): java + native JNI-wrapper, linking to libnative.so
--> Module2 (libnative): native c++ code, producing libnative.so

libnative.so(由 Module2 构建)链接到 Module1 中的 JNI 包装器的首选方法是什么?我目前使用...

Module1-CMakeLists.txt:

add_library( native SHARED IMPORTED )
set_target_properties( jniwrapper PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../libnative/build/intermediates/cmake/${BUILD_TYPE}/obj/${ANDROID_ABI}/libnative.so )

...其中 BUILD_TYPE 在 Module1 的 build.gradle 中设置,具体取决于构建类型。

如果我在构建完整项目之前在 AS 中使用“Make Module 'Module2'”,这会起作用。然而,从 gradle 的构建文件夹层次结构中获取库似乎相当不优雅。

另一种方法似乎是指示模块 2 的 CMakeLists.txt 将文件安装到模块 1 的 lib 目录中并从那里导入。但是 CMake 似乎忽略了 install 命令。

(我知道我可以将模块放在一棵树下。)

谢谢!

最佳答案

替代方案如下:(Module2 CMakeLists.txt)

set_target_properties(${SHARED_LIBRARY_NAME}
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "<your-prefered-directory>/jniLibs/${ANDROID_ABI}")

关于android - 从 Android Studio/CMake 中的子模块导入自己的本地共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42796844/

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