Родной Kotlin не компилируется должным образом с Gradle - PullRequest
0 голосов
/ 12 октября 2018

Я создаю свой первый KN, как показано ниже, gradle init, затем обновляю build.gradle с помощью приведенного ниже кода, затем запускаю gradle build, используя мой Mac:

build.gradle:

buildscript {
    repositories {
        mavenCentral()
        maven {
            url "https://dl.bintray.com/jetbrains/kotlin-native-dependencies"
        }
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-native-gradle-plugin:+"
    }
}

apply plugin: 'konan'

// Compile this component for 64-bit MacOS, Linux and Windows.
 konan.targets = [
                'wasm32',
                'android_arm32', 'android_arm64',
               //  'mingw_x64',
                //  'linux_x64', 'linux_arm32_hfp',
                 'macos_x64',
               //  'ios_x64', 'ios_arm32', 'ios_arm64'
                 ]

konanArtifacts {
    library('utils') {
        srcFiles fileTree('src/libs/utils')
    }
    program('hello') {
        libraries {
            artifact 'utils'
        }
    }
}

Моя структура приложения:

![kn|249x366](upload://86qqoABKdE1jIJ2kl08UegGq2FR.png)

hello.kt (приложение):

fun main() {
    println("Hello Gradle!")
}

foo.kt(lib):

fun foo(){
    println("Hello Gradle! again")
}

, запустив gradle build: я получил библиотеки и исполняемые файлы, как показано в следующем дереве:

enter image description here

У меня есть следующие вопросы:

  1. Ничего не было сгенерировано для следующих целей, поэтому я сделал их комментариями: iOS: ios_x64, ios_arm32, ios_arm64 Raspberry: linux_arm32_hfp Windows: mingw_x64 Linux: linux_x64

  2. Все ли сгенерированные библиотеки utils.Klib одинаковы, так что я могу выбрать любую из них и использовать ее где угодно, или я должен выбрать в соответствии с требованиямиtarget.

  3. Как вызвать функцию foo, которая является частью библиотеки в функции main, я попытался import utils, затем вызвал utils.foo(), но не сработал.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Gradle DSL для новой мультиплатформенной модели Kotlin описан здесь: http://kotlinlang.org/docs/reference/building-mpp-with-gradle.html

(извините за отдельную ветку, у меня просто недостаточно репутации, чтобы оставить комментарий к существующей)

0 голосов
/ 13 октября 2018
  1. Пожалуйста, прочтите документ с заметками о выпуске, описывающий, какие цели поддерживаются на каком хосте: https://github.com/JetBrains/kotlin-native/blob/master/RELEASE_NOTES.md#supported-platforms
  2. Нет, пожалуйста, используйте per-target .klib
  3. Чтобы использовать библиотеку,нужно указать компилятору так, например, -l utils.klib для командной строки или library глагол DSL.

Также рекомендуется использовать новый мультиплатформенный Gradle DSL, а не тот, который вы используете здесь.

...