Настройка gradle и структуры проекта для Kotlin многоплатформенного проекта - PullRequest
0 голосов
/ 28 мая 2020

Я хочу создать инструмент 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 файлов в этом пакете.

Когда я закончу, я хочу иметь (в лучшем случае) один общий исходный набор и одна точка входа для всех моих целей. Возможно ли это вообще?

1 Ответ

0 голосов
/ 29 мая 2020

Насколько я понимаю, вы указываете расположение источников вашего commonMain исходного набора как /src/main/. По умолчанию это обычно /src/commonMain/kotlin/. Поэтому, если вы удалите эти настройки srcDir и создадите файл .kt в папке /src/commonMain/kotlin/, все должно работать нормально. Кроме того, я надеюсь, что вы удалили свойство 'kotlin .import.noCommonSourceSets' из своего gradle.properties, как рекомендовано вашим скриптом.

...