Kotlin Native cinterop def 文件:如何消除绝对路径?

Kotlin Native cinterop def file: how to eliminate absolute path?

当指定linkerOpts时,我们需要为-L选项设置绝对路径,但它很容易被破坏。

在旧版本中,在 build.gradle 中设置 linkerOpts 可以工作,但在 1.3.50 中,它会警告“-linker-option(s)/-linkerOpts/-lopt 选项是cinterop 不支持。请将链接器选项添加到 .def 文件或二进制编译。”,构建失败并出现 "Undefined symbols" 错误。

我能做什么?

此选项将被弃用一次,因此在 1.3.50 发布后有意添加警告。这里的动机是人们应该更喜欢通过 .def 文件设置所有链接器选项,甚至 platform-specific
但是,在这种情况下,构建不应中断。您能否添加脚本内容,使其更清楚 - 究竟是什么导致了错误?


UPD:在评论中分享了 GH 项目后,我想在这里添加一些细节。文档 here 中描述了此问题,这部分:

Often it's necessary to specify target-specific linker options for a binary which uses a native library. It can be done using the linkerOpts property of the binary.

因此,在这种特殊情况下,将选项添加到 binaries 部分而不是 cinterops 部分是正确的。最后,我和

一起做了东西
binaries {
    all {
        linkerOpts = ['-L'+rootProject.projectDir+'/libs/NativeBase64/iOS/', '-lNativeBase64']
    }
}