如何在 M1 mac 上构建支持英特尔 mac 上的 iOS 模拟器的静态库?

How to build a static library on M1 mac that supports iOS simulator on Intel mac?

我有一个胖 iOS 库,它支持真实设备 (arm64...) 和 Intel Mac (x86_64) 的 iOS 模拟器。但是当我切换到 M1 mac 时,事情变得困难了。

如果我使用旧库,我会失败并显示错误 xxx.a (xxx.o) building for iOS Simulator, but linking in object file built for iOS, file 'xxx' for architecture arm64。看来我必须构建一个 xcframework,其中包含用于不同目的地的二进制文件。

所以我尝试构建不同的切片并希望将它们捆绑为一个xcframework。但我终于发现我不知道如何用 M1 Mac.

构建 x86_64 切片

我的问题是

我未能在 M1 Mac 上获得 x86_64 切片的原因是我的构建设置中有一个遗留选项:有效架构。

删除此配置和运行 标准流程。然后你会顺利得到包含x86_64架构的库。

xcodebuild archive --destination="generic/platform=iOS Simulator" ...

如果您的库代码未组织为 Xcode 项目,而是在底层使用了 clang 工具链。可以参考这个link。简而言之,以 arm64-apple-ios14.3-simulator

格式指定目标