У меня есть файл build.gradle, с которым я пытаюсь использовать его для создания своего экземпляра JNI, я использую документацию Gradle , но есть много примеров на C ++ и не так много сC. Я пытаюсь добиться установки, в которой я могу добавить любое количество файлов .c и .h в свое приложение и использовать Gradle для их компиляции и создания одного или нескольких библиотечных файлов .so.
Я знаю, что мой build.gradle неправильный, но я потерял идеи, как это сделать, я нашел много вещей на стороне C ++ в JNI, но не на 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"
}
}
}
}
}
}
Я запускаю это с ./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
Просто для справки. Я использую Gradle версии 5.6.2 с Eclipse.
РЕДАКТИРОВАТЬ:
Iдобавил следующее:
repositories {
libs(PrebuiltLibraries) {
jdk {
headers.srcDirs "${System.properties['java.home']}/../include",
"${System.properties['java.home']}/../include/linux"
}
}
}
Но я все еще получаю ту же ошибку.