我有一个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文件(适用于应用程序和库)以正确编译和设置项目?但是,是否有更好的方法来配置项目以获得所需的结果?