目标构建平台的特定gradle选项



我有一个使用LWJGL库的Kotlin项目(不是Android)。在macOS下,我需要将以下选项添加到build.gradle:

project.ext.lwjglNatives = "natives-macos"
applicationDefaultJvmArgs = ["-XstartOnFirstThread"]
dependencies {
implementation platform('org.jetbrains.kotlin:kotlin-bom')
implementation platform("org.lwjgl:lwjgl-bom:3.2.3")
implementation "org.lwjgl:lwjgl"
implementation "org.lwjgl:lwjgl-openal"
runtimeOnly "org.lwjgl:lwjgl::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-openal::$lwjglNatives"
}

在Windows上,但是,我需要删除applicationDefaultJvmArgs,并将lwjglNatives设置为:

project.ext.lwjglNatives = "natives-windows"

我怎么告诉gradle做这个?基本上我需要一些目标平台检查。

此外,我需要知道Kotlin中的目标平台是否良好。我如何从Kotlin代码中区分构建平台?

我明白了。操作系统可以这样测试:

import org.apache.tools.ant.taskdefs.condition.Os
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
project.ext.lwjglNatives = "natives-windows"
} else {
project.ext.lwjglNatives = "natives-macos"
applicationDefaultJvmArgs = ["-XstartOnFirstThread"]
}

要从Kotlin访问它,需要特别生成一个BuildConfig.java:

tasks.register('generateSources') {
ext.outputDir = "$buildDir/generated/java"
outputs.dir outputDir
doFirst {
mkdir "$outputDir/ch/digorydoo/ksoundrender"
file("$outputDir/ch/digorydoo/ksoundrender/BuildConfig.java").text =
"""|package ch.digorydoo.ksoundrender;
|public class BuildConfig {
|    public static Boolean isWindows() {
|        return ${if (Os.isFamily(Os.FAMILY_WINDOWS)) "true" else "false"};
|}
|}""".stripMargin()
}
}
compileKotlin.dependsOn generateSources
sourceSets.main.java.srcDir generateSources.outputDir

现在我可以从Kotlin中导入BuildConfig

相关内容

  • 没有找到相关文章

最新更新