我有一个build.gradle文件,我试图用它来构建我的JNI实例,我一直在使用Gradle documentation,但是有很多C ++示例,而没有很多C语言示例。 我要实现的设置是,可以在应用程序中添加任意数量的.c和.h文件,并使用Gradle编译这些文件并创建一个或多个.so库文件。
我知道我的build.gradle是错误的,但是我迷失了解决方法,我在JNI的C ++方面发现了很多东西,但没有C。
我当前的项目结构如下:
project/
├──src/
└── com/
└── example/
└── subProjectExample1
└── HelloJNI.java
└── subProjectExample2
└── main.java
└── main/
├── c
└── HelloJNI.c
├── headers
└── com.example_HelloJNI.h
build.gradle
allprojects {
apply plugin "java"
apply plugin "c"
apply plugin "eclipse"
}
subprojects {
apply plugin "java"
repositories {
jcenter()
}
}
project(':example1') {
dependencies {
}
}
project(':example2') {
dependencies {
compile project(':example1')
}
}
model {
repositories {
libs(PrebuiltLibraries) {
jdk {
headers.srcDirs "${System.properties['java.home']}/../include",
"${System.properties['java.home']}/../include/linux"
}
}
}
platforms {
linux64 {
operatingSystem "linux"
architecture "x86_64"
}
}
toolchains {
gcc(Gcc) {
eachPlatform {
cCompiler.executable = "/usr/bin/gcc"
}
}
}
components {
main(NativeLibrarySpec) {
sources {
c {
source {
srcDir "src/main/c"
include "**/*.c"
}
exportedHeaders {
srcDir "src/main/headers"
}
}
}
}
}
}
我正在与documents中的./gradlew mainExecutable
一起运行
我得到的output.txt是:
HelloJNI.c: fatal error: jni.h: No such file or directory
#include "jni.h"
^
compilation terminated.
error: command 'gcc' failed with exit status 1
仅供参考,我在Eclipse中使用了Gradle 5.6.2版。
编辑:
我添加了以下内容:
repositories {
libs(PrebuiltLibraries) {
jdk {
headers.srcDirs "${System.properties['java.home']}/../include",
"${System.properties['java.home']}/../include/linux"
}
}
}
但是我仍然遇到相同的错误。