gpt4 book ai didi

java - Gradle:添加从 Java 到 Native 编译的依赖

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:39 25 4
gpt4 key购买 nike

我尝试为正确的 JNI 编译设置 gradle,所以我需要首先构建一个共享库(使用 c 插件),然后编译和测试 java 代码(使用该库)。

这里是 build.gradle 的示例,与 native 编译相关:

model {
components {
yli(NativeLibrarySpec) {
sources {
c {
source {
srcDir 'src/main/c'
include "Yli.c"
commonFolders.each {
include "$it/**/*.c"
}
}
}
}
buildTypes {
release
}
}
}
}

告诉 gradle compileJava 应该等待 NativeLibrarySpec 的构建的最佳方式是什么?

编辑:当我尝试添加时

compileJava.dependsOn(yliSharedLibrary)

我在gradle构建过程中出现了以下错误:

* What went wrong:
A problem occurred evaluating root project 'yli'.
> Could not get unknown property 'sharedLibrary' for root project 'yli' of type org.gradle.api.Project.

注意:我使用命令“gradle tasks”来找到任务的名称:“yliSharedLibrary”。

最佳答案

我尝试了这个,发现您可以访问由 software model 创建的任务在闭包内。例如,如果你想依赖一个本地任务,你可以这样做:

compileJava.dependsOn { yliNativeCompileTask }

当然,如果您希望 Java 任务在 native 任务之后执行,但不强制它们之间存在实际依赖关系,您可以使用 mustRunAfter():

compileJava.mustRunAfter { yliNativeCompileTask }

此语法也适用于声明的输入和输出:

compileJava.inputs.files { yliNativeCompileTask }

请注意,如果您将一个任务的输入与另一个任务的输出联系起来,则不必显式声明 dependsOn。 Gradle 推断任务依赖性。

免责声明我不知道这是否是正确的方法,或者您可以采用这种方法多远。

最后一件事:旧的 native 软件模型正在被 new set of native plugins 取代基于 Gradle 的原始模型。将 Java 项目与这些新插件集成起来应该容易得多,但您可能希望等到插件完全充实后再尝试迁移。

关于java - Gradle:添加从 Java 到 Native 编译的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51772823/

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