CMake:从应用程序代码引用兄弟原生Android库模块

时间:2018-03-07 03:55:36

标签: cmake android-gradle shared-libraries static-libraries android-library

我有一个Android Studio项目,其总体布局如下:

Project/
 |
 +-- app/
 |  |
 |  +-- src/main/cpp/
 |  |  |
 |  |  +-- native-lib.cpp
 |  |  +-- CMakeLists.txt
 |  |
 |  +-- build.gradle
 |  +-- CMakeLists.txt
 |  |
 +-- sibling-lib/
 |  |
 |  +-- src/main/cpp/
 |  |  |
 |  |  +-- partA/CMakeLists.txt
 |  |  +-- partB/CMakeLists.txt
 |  |  +-- partC/CMakeLists.txt
 |  |
 |  +-- build.gradle
 |  +-- CMakeLists.txt
 |
 +-- build.gradle
 +-- settings.gradle

sibling-lib是一个由多个部分组成的第三方库,每个部分都有不同的源和公共标题,每个部分都使用相关的CMake文件编译成静态或共享库,并作为子目录由顶级库CMake文件。这些部件大部分都依赖于其他部件。

目标是将sibling-lib的部分编译并链接到Android库(.aar)中的库文件中,并使用主应用程序中本机文件中的那些库(例如native-lib.cpp)。我已经能够将每个部分编译为静态库,最后一部分作为共享库链接在一起(在该部分上使用target_link_libraries()),然后从应用程序的Java代码加载库。但是,当我尝试调用任何sibling-lib函数时,我会在编译时收到引用错误。

如何配置CMake和gradle文件(适用于应用程序和库)以正确编译和设置项目?但是,是否有更好的方法来配置项目以获得所需的结果?

0 个答案:

没有答案