2

我想将我的 MacApp 移植到一个通用版本,包括新 Apple Silicon Arm64 芯片的二进制文件。

除了在 Xcode 12.1 上使用标准架构构建设置,我还需要做什么?我的方案只显示 Any Mac (Intel)

4

2 回答 2

0

您绝对应该阅读有关此主题的 Apple 官方指南:https
://developer.apple.com/documentation/xcode/building_a_universal_macos_binary 那里很好地介绍了该过程。

此外,Apple 还有一份 Apple Silicon 指南:https
://developer.apple.com/documentation/xcode/porting_your_macos_apps_to_apple_silicon 这也是必读的。

所以第一步显然是更新架构列表。目前的 MacMini/Macbooks 有x86_64,Apple Silicon 有arm64等等。

您应该编译并一一删除所有编译错误。

在为 Apple Silicon 构建我的应用程序时,我遇到了这样的问题:

包装特定于平台的代码(此标题复制自 Apple 教程 :))
例如

#if os(macOS)
   // Put CPU-independent macOS code here.
   #if arch(arm64)
      // Put 64-bit arm64 Mac code here.
   #elseif arch(x86_64)
      // Put 64-bit x86_64 Mac code here.
   #endif
#elseif targetEnvironment(macCatalyst)
   // Put Mac Catalyst-specific code here.
#elseif os(iOS)
   // Put iOS-specific code here.
#endif

构建胖库(这是一个自定义解释:))
您的应用程序可以使用任何 C/C++ 静态/动态库,例如CurlOpenSSL。为了使应用程序通用,您应该确保所有这些库都包含代码所有平台。 lipo将成为您的朋友(这也包含在指南中)。为 Apple Silicon 构建静态库的示例:https ://cutecoder.org/programming/compile-open-ssl-apple-silicon/

我不确定我是否完全涵盖了您的问题,因此请询问更多详细信息,我会澄清一下。

于 2020-10-30T19:04:09.363 回答
0

Xcode 12.1 没有您需要为 Apple Silicon 编译的 macOS 11 SDK。在 macOS 11 发布之前,您必须下载包含 macOS 11 SDK 的 Xcode 12 测试版,例如 Xcode 12.2 测试版。

于 2020-10-30T20:01:33.363 回答