Kotlin 科特林';s cinterop.def不适用于相对路径

Kotlin 科特林';s cinterop.def不适用于相对路径,kotlin,kotlin-multiplatform,cinterop,Kotlin,Kotlin Multiplatform,Cinterop,我有一个静态库,需要链接到其他静态库 当我尝试运行/gradlew common:cinteropSomeLibIos: 我总是得到非法状态异常:在[external/lib]中都找不到'libabseil.a'二进制文件。 我的def文件: headers = SomeHeader.h language = Objective-C package = com.mypackage staticLibraries = libabseil.a libMyLib.a libraryPaths = ex

我有一个静态库,需要链接到其他静态库

当我尝试运行
/gradlew common:cinteropSomeLibIos

我总是得到非法状态异常:在[external/lib]中都找不到'libabseil.a'二进制文件。

我的def文件:

headers = SomeHeader.h
language = Objective-C
package = com.mypackage
staticLibraries = libabseil.a libMyLib.a
libraryPaths = external/lib
linkerOpts = -lObjC -all_load
AndroidStudio/IntelliJ中的一切都可以正常工作,但是当使用命令行界面或使用bazel构建时,我始终会遇到上述错误

我试着加上:

val main by compilations.getting {
        kotlinOptions {
            freeCompilerArgs = listOf(
                "-include-binary", "$libLocation/libabseil.a"
            )
        }
    }
以及在gradle文件中设置linkerOpts,但这会导致:

warning: -linker-option(s)/-linkerOpts option is not supported by cinterop. Please add linker options to .def file or binary compilation instead.

有没有办法让它工作,或者至少调用cinterop任务,使.def文件中的相对路径工作?

Hello。你能澄清一点吗,你是想摆脱Gradle脚本,直接调用cinterop工具,还是只想让使用相对路径指向的静态库工作?静态库+相对路径是最初的目标(不是直接调用cinterop工具)。在iOS上,我们通过Bazel构建并从Bazel(我知道)调用gradle packForXcode任务,这样做时相关路径都会失败。我用Bazel iOS规则编译了一个框架来打包静态库,从而解决了这个问题。然后只需添加编译器选项来链接build.gradle.kts文件中的框架。希望会有更干净/更明显的方式你好。你能澄清一点吗,你是想摆脱Gradle脚本,直接调用cinterop工具,还是只想让使用相对路径指向的静态库工作?静态库+相对路径是最初的目标(不是直接调用cinterop工具)。在iOS上,我们通过Bazel构建并从Bazel(我知道)调用gradle packForXcode任务,这样做时相关路径都会失败。我用Bazel iOS规则编译了一个框架来打包静态库,从而解决了这个问题。然后只需添加编译器选项来链接build.gradle.kts文件中的框架。希望有一个更干净/更明显的方法