我使用的是 xcode 12.4 macOS catalina、Intel x64 机器。有一个项目是 C/C++ 项目并输出 dylib。在 xcode 12.4 中,构建设置“架构”是 Apple Silicon 和 Intel。
构建主动架构才是唯一。
dylib 构建得很好,但是当我检查它是否是通用库或不使用 lipo 时,它会显示在 x64 上,而不是arm上。
我注册只是为了发布答案,因为我自己花了几个小时来解决同样的问题。 “构建选项”下有一个设置“允许多平台构建”,应该打开它。它为我成功了,现在它编译了一个“胖”dylib。 令人困惑的是,对于捆绑包,它会编译通用二进制文件,并将此设置关闭,但对于 dylib 则不然。
我刚刚用类似的场景解决了我的问题,但有一个应用程序目标。我将 FCPX 项目(在 Xcode v10.* 上创建)复制到了一个旨在支持“arm64”的新项目,并且 x86_64'。由于我使用的是 *.xcconfig 设置,所以我没有预料到任何问题 - 但是,果然,arm64 没有构建,因为 VALID_ARCHS 的“杂散”设置将目标限制为 x86_64。但 Xcode 12.2 不再在 ui 中显示“有效架构”设置(这是我困惑的根源)。无论如何,我首先通过向 *.xcconfig 文件添加 VALID_ARCHS 设置(其中包括 arm64)来解决我的问题。最终的解决方案是编辑 project.pbxproj 文件,并放弃 VALID_ARCHS 设置。
这是一个直到今天还存在的错误。
仅构建主动架构:否 允许多平台构建:是
现在将 Architectures 设置为:“x86_64 arm64”并构建。将会弹出“<...> 使用自定义架构。您想更新以使用标准架构构建吗?”。选择构建但不更新。
只有最后一步,我的 dylib 才真正具有通用性。
在下一个版本中,您可以选择更新,将其设置回 $(ARCHS_STANDARD)。
这很奇怪,但对我有用。