android - 对 NDK 中的不同库使用 ndk-build 和 cmake

标签 android c cmake android-ndk ndk-build

我有一个包含我的 native 代码的 Android 库,我将该库导入到我的应用程序中。我已经在这个库中编写了一些 native C/C++ 代码,并使用 ndk-build 设置了编译。这是我添加到库的 gradle 文件中的代码:

externalNativeBuild {
    ndkBuild {
        path 'src/main/jni/Android.mk'
    }
}

这一切工作得很好。现在,我想包含一个外部 native C/C++ 库,我有关于如何使用 CMake 设置它的说明。我编写了代码以将此外部库包含到我的顶级 CMakeLists.txt 中,并将其包含到我的 gradle 中,但它看起来不像

externalNativeBuild {
    ndkBuild {
        path 'src/main/jni/Android.mk'
    }

    cmake {
        // Provides a relative path to your CMake build script.
        path "CMakeLists.txt"
    }
}

当我尝试构建这个时,我收到一条错误消息

More than one externalNativeBuild path specified

有没有办法构建它,或者我必须仅使用 ndk-buildCMake 之一。

最佳答案

cmake 和 gnu make(作为 ndk-build 的基础)都支持自定义目标和外部工具,因此您可以从 Android.mk 启动您的 cmake 部分,反之亦然。

但这对 Android Studio 集成没有帮助。要为两个 native 子项目提供完整的 IDE 支持,您可以重写其中一个或另一个以使用相同的外部 native 构建,或者将依赖于其中一个子项目的部分从应用程序模块提取到库模块。

关于android - 对 NDK 中的不同库使用 ndk-build 和 cmake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49686295/

相关文章:

c++ - 读出数组元素会返回奇怪的数字;

c - 是否有标准的指针大小声明?

cmake - CMake没有获取链接库的INTERFACE_INCLUDE_DIRECTORIES

java - 为智能手机的具体模型选择布局参数

android - 库源文件应该如何引用其父项目中的字符串资源?

c - 长长在 c99

c++ - netbeans c++ googletest 从 gui 运行测试

c++ - 强制 target_link_libraries 使用 C++ 链接器

java - 如何在 Android Activity 中从位图创建 Blob?

javascript - 使用ripple时PhoneGap错误