Kotlin 本机无法使用 Gradle 正确编译
Kotlin native not compiling properly with Gradle
我如下构建我的第一个 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'
}
}
}
我的应用结构是:
hello.kt
(应用程序):
fun main() {
println("Hello Gradle!")
}
foo.kt
(库):
fun foo(){
println("Hello Gradle! again")
}
by 运行 gradle build
:我得到了如下树中的库和可执行文件:
我有以下问题:
以下目标没有生成任何内容,这就是我将它们作为注释的原因:
iOS: ios_x64, ios_arm32, ios_arm64
覆盆子:linux_arm32_hfp
Windows: mingw_x64
Linux: linux_x64
是否所有生成的库都相同utils.Klib
,所以我可以选择其中任何一个并在任何地方使用它,或者我必须根据需要的目标选择。
如何在 main
函数中调用作为库一部分的函数 foo
,我试过 import utils
然后调用 utils.foo()
但是没用。
- 请阅读发行说明文档,描述在哪个主机上支持哪些目标:https://github.com/JetBrains/kotlin-native/blob/master/RELEASE_NOTES.md#supported-platforms
- 不,请使用每个目标 .klib
- 要使用该库,您需要告诉编译器,即
-l utils.klib
用于命令行或 library
DSL 动词。
另外建议使用新的多平台 Gradle DSL,而不是你在这里使用的那个。
Gradle 此处描述了新的 Kotlin 多平台模型的 DSL:http://kotlinlang.org/docs/reference/building-mpp-with-gradle.html
(抱歉,我有一个单独的线程,我只是没有足够的声誉对现有线程发表评论)
我如下构建我的第一个 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'
}
}
}
我的应用结构是:
hello.kt
(应用程序):
fun main() {
println("Hello Gradle!")
}
foo.kt
(库):
fun foo(){
println("Hello Gradle! again")
}
by 运行 gradle build
:我得到了如下树中的库和可执行文件:
我有以下问题:
以下目标没有生成任何内容,这就是我将它们作为注释的原因: iOS: ios_x64, ios_arm32, ios_arm64 覆盆子:linux_arm32_hfp Windows: mingw_x64 Linux: linux_x64
是否所有生成的库都相同
utils.Klib
,所以我可以选择其中任何一个并在任何地方使用它,或者我必须根据需要的目标选择。如何在
main
函数中调用作为库一部分的函数foo
,我试过import utils
然后调用utils.foo()
但是没用。
- 请阅读发行说明文档,描述在哪个主机上支持哪些目标:https://github.com/JetBrains/kotlin-native/blob/master/RELEASE_NOTES.md#supported-platforms
- 不,请使用每个目标 .klib
- 要使用该库,您需要告诉编译器,即
-l utils.klib
用于命令行或library
DSL 动词。
另外建议使用新的多平台 Gradle DSL,而不是你在这里使用的那个。
Gradle 此处描述了新的 Kotlin 多平台模型的 DSL:http://kotlinlang.org/docs/reference/building-mpp-with-gradle.html
(抱歉,我有一个单独的线程,我只是没有足够的声誉对现有线程发表评论)