在旧版MacOS应用中为任何MacApple Silicon,Intel激活Build

问题描述

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

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

解决方法

您绝对应该阅读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 / Macbook具有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/

我不确定我是否已经完全解决了您的问题,因此请询问更多细节,我会澄清。

,

Xcode 12.1不具有macOS 11 SDK,您需要为MacOS 11 SDK进行编译。在macOS 11发行之前,您将必须下载Xcode 12的beta版本,其中包括macOS 11 SDK,例如Xcode 12.2 beta。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...