Kotlin/Native cinterop: compilerOpts inside .def file vs com



Kotlin/Nativecinterop文档中,您必须定义一个.def文件,例如:

language = Objective-C
modules = FirebaseCore
compilerOpts = -framework FirebaseCore
linkerOpts = -framework FirebaseCore

现在,您还可以在cinterop块中指定compilerOpts,例如:

compilations["main"].cinterops {
firebasecore {
packageName 'cocoapods.FirebaseCore'
defFile = file("$projectDir/src/iosMain/c_interop/FirebaseCore.def")
includeDirs ("$projectDir/../iosApp/Pods/FirebaseCore/Firebase/Core/Public")
compilerOpts ("-F$projectDir/src/iosMain/c_interop/modules/FirebaseCore-${versions.firebaseCoreIos}")
}
}

我只举了凯文·加利根(Kevin Galligan(的例子:KMPFirestore。

我真的很困惑 gradle 内部的compilerOpts与文件中compilerOpts.def有什么区别?

我没有强大的 C 背景,我只是想学习Kotlin Multiplatform(现在只是想了解如何与 c 或 objectiveC 库互操作(,但我无法正确设置它们。

我真的很感激一些帮助,因为我什至不完全了解.def文件是如何工作的。

任何与理解这些事情有关的阅读材料都会有很大帮助。

AFAIK,两个编译器选择将在生成互操作时合并。可悲的是,链接器选择不能以这种方式工作。但是为了让互操作正常工作并链接,我必须在 .def 文件中为 linkerOpts 指定框架的绝对路径。

最新更新