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文件中的框架。希望有一个更干净/更明显的方法