使用Gradle

时间:2019-09-19 01:20:55

标签: java c eclipse gradle java-native-interface

我有一个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"
            }
        }
    }

但是我仍然遇到相同的错误。

0 个答案:

没有答案