gpt4 book ai didi

android - Gradle NDK 在生成的 Android.mk 中指定 'include' 指令

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:52:00 24 4
gpt4 key购买 nike

当你有

android {
defaultConfig {
ndk {
moduleName "yourlib"
stl "stlport_static"
ldLibs "log", "z", "m"
cFlags "-I/some/include/dir/"
}
...
}
...
}

在您的 build.gradle 中,Gradle 将编译 src/main/jni/中的文件,并在 build/ndk/debug/Android.mk 中生成一个 Android.mk。

但是,就我而言,我正在尝试编译一些针对 OpenCV 编译的 C++ 文件。

当我手动创建 Android.mk 文件并运行 ndk-build 命令时,我可以正常工作。但我想通过 Gradle/Android Studio 自动完成。

手动执行此操作时,我会包含要链接的库。我在手动创建的 Android.mk 中使用以下行执行此操作:

include /path/to/the/opencv/directory/sdk/native/jni/OpenCV.mk

但是,在 Android 的 Gradle 插件中,我不确定如何在生成的 Android.mk 文件中添加这个“include”指令。

任何人都可以指出正确的 Gradle 指令方向以将此行添加到生成文件吗?谢谢。

最佳答案

我发现构建过程将从 ./src/main/jni 文件夹下提取所有内容。因此,我在那里放置了符号链接(symbolic link)以在其他地方包含和 src 文件夹 - src 文件将由构建过程枚举到 .mk 文件中,而 inc 文件将由编译器收集。也许它有点老套:

android {
defaultConfig {
ndk {
moduleName "yourlib"
cFlags "-std=c99 -I${project.buildDir}/../src/main/jni/inc"
}
...
}
...
}

我也有不同的 cFlags,具体取决于调试版本。这似乎是有效的 gradle,但不想使用 android-studio 构建。它将使用 gradlew 命令构建:

android {
defaultConfig {
ndk {
moduleName "yourlib"
cFlags "-std=c99 -I${project.buildDir}/../src/main/jni/inc"
}
...
}
...
buildTypes {
release {
debuggable false
jniDebugBuild false
ndk {
moduleName "yourlib"
}
}
debug {
debuggable true
jniDebugBuild true
ndk {
moduleName "yourlib"
ldLibs "log"
cFlags "-g -D_DEBUG"
}
}
}
}

希望对你有所帮助(android-studio 0.8.6)

关于android - Gradle NDK 在生成的 Android.mk 中指定 'include' 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23935193/

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