Родной Kotlin не компилируется должным образом с Gradle
Я строю свой первый КН, как показано ниже, 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'
}
}
}
Моя структура приложения:
hello.kt
(приложение):
fun main() {
println("Hello Gradle!")
}
foo.kt
(Lib):
fun foo(){
println("Hello Gradle! again")
}
запустив gradle build
: Я получил библиотеки и исполняемые файлы, как показано в дереве ниже:
У меня есть следующие вопросы:
Ничего не было сгенерировано для следующих целей, поэтому я сделал их комментариями: iOS: ios_x64, ios_arm32, ios_arm64 Raspberry: linux_arm32_hfp Windows: mingw_x64 Linux: linux_x64
Все ли сгенерированные библиотеки
utils.Klib
такие же, так что я могу выбрать любого из них и использовать его где угодно, или я должен выбрать в соответствии с требуемой целью.Как вызвать функцию
foo
это часть библиотеки вmain
функция, я пыталсяimport utils
потом звонюutils.foo()
но не сработало.
2 ответа
Gradle DSL для новой мультиплатформенной модели Kotlin описан здесь: http://kotlinlang.org/docs/reference/building-mpp-with-gradle.html
(извините за отдельную ветку, у меня просто недостаточно репутации, чтобы оставить комментарий к существующей)
- Пожалуйста, прочтите документ с заметками о выпуске, в котором описано, какие цели поддерживаются на каком хосте: https://github.com/JetBrains/kotlin-native/blob/master/RELEASE_NOTES.md#supported-platforms
- Нет, пожалуйста, используйте per-target.klib
- Чтобы использовать библиотеку, нужно указать компилятору так, т.е.
-l utils.klib
для командной строки илиlibrary
Глагол DSL
Также рекомендуется использовать новый мультиплатформенный Gradle DSL, а не тот, который вы используете здесь.