Используя плагин 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»
?
Кажется, что библиотеки всегда создаются в одном месте — см. Вот для деталей — Вы должны жестко закодировать только часть пути.
К сожалению, я не проверял это — не знаю как, если честно.
РЕДАКТИРОВАТЬ
Ниже вы можете найти пример сценария (созданного после копания в исходных текстах), который печатает задачи и выходные файлы. Я вижу, что сборка нативных библиотек организована совершенно иначе, чем другие плагины. Надеется, это вам как-то помогло:
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/
,