import org.jetbrains.compose.desktop.application.dsl.TargetFormat plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.composeCompiler) alias(libs.plugins.kotlinSerialization) } kotlin { jvm() sourceSets { commonMain.dependencies { implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material3) implementation(compose.ui) implementation(compose.components.resources) implementation(compose.components.uiToolingPreview) implementation(libs.androidx.lifecycle.viewmodelCompose) implementation(libs.androidx.lifecycle.runtimeCompose) } jvmMain.dependencies { implementation(compose.desktop.currentOs) implementation(libs.kotlinx.coroutinesSwing) implementation(libs.kotlinx.datetime) implementation(libs.kotlinx.serialization.json) implementation(libs.cardiologist) implementation(libs.kotlin.logging.jvm) implementation(libs.logback.classic) implementation(libs.material.kolor) } } } val appVersion = "0.1.0" val generatedSrcDir = layout.buildDirectory.dir("generated/src/jvmMain/kotlin") val generateBuildConfig by tasks.registering { val outputDir = generatedSrcDir val version = appVersion outputs.dir(outputDir) doLast { val dir = outputDir.get().asFile.resolve("com/rukira/wowbackup") dir.mkdirs() dir.resolve("BuildConfig.kt").writeText( """ |package com.rukira.wowbackup | |object BuildConfig { | const val VERSION = "$version" |} """.trimMargin() ) } } kotlin.sourceSets.named("jvmMain") { kotlin.srcDir(generateBuildConfig) } compose.desktop { application { mainClass = "com.rukira.wowbackup.MainKt" jvmArgs("-Dapple.awt.enableTemplateImages=true") nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "com.rukira.wowbackup" packageVersion = appVersion } } }