Файл / файлы выходных данных Gradle C (native) (для использования в других задачах / проектах)

Используя плагин 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}" {}
}

При беге

задание

в Linux — одна из задач будет «diaf-linuxSharedLibrary»

Как получить дескриптор выходного файла задачи (который будет использоваться в другой задаче)? В этом случае libdiaf-linux.so?
Не прибегая к жестко закодированным путям, как в

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

?

2

Решение

Кажется, что библиотеки всегда создаются в одном месте — см. Вот для деталей — Вы должны жестко закодировать только часть пути.

К сожалению, я не проверял это — не знаю как, если честно.

РЕДАКТИРОВАТЬ

Ниже вы можете найти пример сценария (созданного после копания в исходных текстах), который печатает задачи и выходные файлы. Я вижу, что сборка нативных библиотек организована совершенно иначе, чем другие плагины. Надеется, это вам как-то помогло:

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/,

1

Другие решения


По вопросам рекламы [email protected]