gpt4 book ai didi

c++ - Gradle C( native )任务输出文件/文件(用于其他任务/项目)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:19:57 25 4
gpt4 key购买 nike

使用 c 插件,可以指定可执行文件和库。我正在使用字符串标记来指定具有操作系统特定名称的库(稍后在 JNI 设置中使用)。

import org.apache.commons.lang3.SystemUtils as SU

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.apache.commons:commons-lang3:3.3.2'
}
}

def osString = SU.IS_OS_LINUX ? "linux" : (SU.IS_OS_MAC_OSX ? "macosx" : SU.IS_OS_WINDOWS ? "windows" : "")
assert osString

也就是获取操作系统字符串。这里是库的声明:

libraries {
"diaf-${osString}" {}
}

运行时

gradle tasks

在 linux 机器上,任务之一是“diaf-linuxSharedLibrary”

如何获得任务输出文件的句柄(用于另一个任务)?在这种情况下是 libdiaf-linux.so?无需像

中那样使用硬编码路径

def path = "${buildDir}/build/binaries/diaf-linuxSharedLibrary/libdiaf-linux.so"

?

最佳答案

库似乎总是在同一位置创建 - 参见 here有关详细信息 - 您只需要对部分路径进行硬编码。

很遗憾,我还没有测试过 - 老实说,不知道如何。

编辑

您可以在下面找到一个示例脚本(在挖掘 gradle 源代码后创建),它打印任务和输出文件。我看到构建本地库的组织方式与其他插件完全不同。希望它以某种方式帮助你:

apply plugin: 'c'

libraries {
hello {}
}

binaries.withType(SharedLibraryBinarySpec) {
println it.sharedLibraryFile
println it.tasks
}

binaries.withType(StaticLibraryBinarySpec) {
println it.staticLibraryFile
println it.tasks
}

您还可以在 $GRADLE_HOME/samples/native-binaries/ 下找到一些示例。

关于c++ - Gradle C( native )任务输出文件/文件(用于其他任务/项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27797552/

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