【发布时间】:2022-01-05 11:53:58
【问题描述】:
例如,我知道 kotlin native 有 CoreCrypto。如何修改 kotlin gradle 脚本以便编译以下代码:
import kotlinx.cinterop.*
import platform.CoreCrypto.CC_SHA256 // compile error, obviously, as there's no depenedncy
import platform.CoreCrypto.CC_SHA256_DIGEST_LENGTH
fun main() {
// ...
}
我的 gradle 脚本:
plugins {
kotlin("multiplatform") version "1.6.10"
}
group = "com.jaga"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
kotlin {
val hostOs = System.getProperty("os.name")
val isMingwX64 = hostOs.startsWith("Windows")
val nativeTarget = when {
hostOs == "Mac OS X" -> macosX64("native")
hostOs == "Linux" -> linuxX64("native")
isMingwX64 -> mingwX64("native")
else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
}
nativeTarget.apply {
binaries {
executable {
entryPoint = "main"
}
}
}
sourceSets {
val nativeMain by getting
val nativeTest by getting
}
}
我已经找了好几个小时了。
文档:https://kotlinlang.org/docs/native-platform-libs.html
这里有例子:https://github.com/JetBrains/kotlin/tree/master/kotlin-native/samples
但它们不是自包含的,并且以一些我无法在单个 gradle 脚本中重现的复杂通用方式处理依赖关系。
编辑:实际上,即使是这些示例也无法构建,因此它们不能作为参考...
【问题讨论】:
-
您好!您能否在 kotl.in/issue 提交问题?使用 Mac 主机时应正确解析此代码。我强调的是主机操作系统要求,因为这些符号是根据可用的系统标头创建的,因此它们无法在 Linux 或 Windows 主机上交付。
标签: kotlin kotlin-native