Я хочу создать инструмент CLI с Kotlin Multiplatform, который работает на Linux, Macos и Windows.
Но мне сложно настроить свой build.gradle
и структуру моего проекта. Я использую IntelliJ IDEA 2020.1
и создал свой проект basi c с File -> New -> Project -> Kotlin / Native | Gradle
В настоящее время я просматриваю руководства с kotlinlang.org , но я больше падаю, чем достигаю чего-то.
Пока мой build.gradle
выглядит следующим образом:
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '1.3.72'
}
repositories {
mavenCentral()
}
kotlin {
// For ARM, should be changed to iosArm32 or iosArm64
// For Linux, should be changed to e.g. linuxX64
// For MacOS, should be changed to e.g. macosX64
// For Windows, should be changed to e.g. mingwX64
linuxX64("linux") {
}
mingwX64("mingw") {
}
macosX64("macos") {
binaries {
executable {
// Change to specify fully qualified name of your application's entry point:
entryPoint = 'sample.main'
// Specify command-line arguments, if necessary:
runTask?.args('')
}
}
}
sourceSets {
commonMain {
kotlin.srcDir('src/main')
resources.srcDir('src/res')
dependencies {
implementation kotlin('stdlib-common')
implementation "com.github.ajalt:clikt-multiplatform:2.7.0"
}
}
commonTest {
dependencies {
implementation kotlin('test-common')
implementation kotlin('test-annotations-common')
}
}
macosX64().compilations.test.defaultSourceSet {
dependsOn commonMain
}
// Note: To enable common source sets please comment out
'kotlin.import.noCommonSourceSets' property
// in gradle.properties file and re-import your project in IDE.
macosMain {
}
macosTest {
}
}
}
wrapper {
gradleVersion = "6.4.1"
distributionType = "ALL"
}
И моя структура проекта все еще базовая c:
Структура проекта
Раньше я работал только над Android проектами с Kotlin, и я думаю, я испорчен gradle, поскольку Android генерирует самые базовые c вещи, и все работает без особых усилий.
Я понимаю, что мне нужно создать такие пакеты, как linuxMain
и mingwMain
, но где мне разместить общие исходные коды? Я попытался создать пакет под названием commonMain
, но он даже не позволил мне создать Kotlin файлов в этом пакете.
Когда я закончу, я хочу иметь (в лучшем случае) один общий исходный набор и одна точка входа для всех моих целей. Возможно ли это вообще?