【问题标题】:link dependent android ndk cmake project to main android ndk library project将依赖的 android ndk cmake 项目链接到主 android ndk 库项目
【发布时间】:2021-02-06 18:13:36
【问题描述】:

我在这个项目中有 2 个模块:applibdatacpp libdatacpp 主要是一个 C++ 项目,但使用了一些 java 代码 app主要是java项目,不过用到了一些c++代码

在构建项目时,我收到来自 libdatacpp 的未定义函数的 c++ 链接器错误,因为 app 项目没有链接 libDataCpp.o

app 的 cmake 中,我链接到 libDataCpp,如下所示:

target_link_libraries(
        native-lib
        DataCpp)

我还链接到 app 模块的 build.gradle 中的另一个项目,如下所示:

dependencies {
    api project(':libdatacpp')

如何让app 模块自动链接到我的libdatacpp 模块?

【问题讨论】:

    标签: android c++ cmake android-ndk cmake-modules


    【解决方案1】:

    如果您打算通过.aar 为其他AndroidStudio 项目提供libdatacpp 原生库,则需要使用prefab 功能。

    但是如果这些本地库是您自己项目的一部分,那么我认为没有必要将其放在 .aar 中,只需将其内容(sources 和 CMakeLists.txt)放在子文件夹中并将其添加到 build在主 CMake 中使用 add_subdirectory (datacpp)

    【讨论】:

    • 这两个原生库都是我自己的项目,所以我想在构建我的项目时将其他项目作为依赖项构建。当我有一个依赖库时,add_subdirectory 方法似乎可以工作,但是如果我的库依赖于另一个库项目,这将如何工作?当我将add_subdirectory 放在主应用程序的cmake 文件中时,我在构建依赖库时出错(找不到libDataCpp) 我的项目的依赖项是:app 依赖于async-cpp,它依赖于data-cpp
    • 您需要其他主 cmake 文件(不是通过应用程序的 cmake),您将在其中添加以通过 add_subdirectory 命令构建您的库:add_subdirectory(data-cpp) add_subdirectory(async-cpp) add_subdirectory(app)
    • 根cmakelists应该如何构建?我正在使用应用程序的 cmakelists 并为 data-cpp 和 async-cpp 做 add_subdirectory,它仍然给我cannot find -lDataCpp
    • 再一次,您需要另一个上级根 cmake 而不是应用程序的 cmake,您可以通过 add_subdirectory 所有子目录添加。
    • 你有一个根 cmake 应该是什么样子的例子吗?我只是不知道它需要如何基本构建
    猜你喜欢
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多