将Swift Package构建为通用二进制文件 Universal Binary

将Swift软件包构建为通用二进制文件

因此,在苹果在WWDC 2020期间宣布他们将把Mac从英特尔处理器过渡到苹果硅之后,现在是时候让每个人都准备好他们的软件了。

对大多数人来说,这次过渡可能更容易一些,特别是那些已经在iOS上支持arm64的人,但仍有工作要做,以确保工具和预编译的发行版支持使用Apple Silicon的Mac公开时准备好的两种架构。如果您还没有看到它,其中许多内容都包含在将Mac应用程序移植到Apple SiliconWWDC会话视频中。

如果您使用Xcode编译命令行工具,那么只要您将ARCHS构建设置设置为$(ARCHS_STANDARD)默认值),事情就非常简单。在Xcode 12中,此值被描述为**标准架构(64位英特尔和ARM),**但如果您使用Swift软件包管理器来构建和分发二进制文件或库,则没有此类选项。

相反,从Swift 5.3的Swift Package Manager(Xcode 12)开始,swift-build执行文件现在引入了--arch选项(apple/swift-package-manager#2787)。

构建通用二进制

首先,确保您使用的是正确版本的Xcode/Swift:

复制代码
$ xcrun swift build --version
Swift Package Manager - Swift 5.3.0

注意: 如果这不是Swift 5.3或更高版本,请使用xcode-select -s切换到Xcode 12测试版。

现在,在编译软件包时,请指定两个架构来编译通用二进制文件:

复制代码
$ xcrun swift build -c release --arch arm64 --arch x86_64
$ xcrun swift build -c debug --arch arm64 --arch x86_64

要验证您构建的二进制文件是否包含两种架构,您可以使用lipo -info命令检查二进制文件并确认:

复制代码
$ lipo -info .build/apple/Products/Release/swiftlint
Architectures in the fat file: .build/apple/Products/Release/swiftlint are: x86_64 arm64

$ lipo -info .build/apple/Products/Debug/swiftlint

就这样,将您的Swift软件包构建为通用二进制文件就这么简单!

相关推荐
qq_570398577 小时前
Three.js基础使用-案例
开发语言·javascript·ecmascript
Suxing97 小时前
C语言基础分享:C语言文件操作:从“写日记”到“拍电影”的存盘指南
c语言·开发语言
右耳朵猫AI7 小时前
Node.js周刊2026W36 | NestJS 12发布、Remix 3 RC、pnpm 12 Rust重写、Node.js 26.8.0
开发语言·rust·node.js
2501_915106327 小时前
Flutter iOS混淆打包详细教程与步骤
android·flutter·ios·小程序·uni-app·iphone·webview
统计学小王子7 小时前
数学建模国赛倒计时 2 天 ——《异常值的处理(R语言)》
开发语言·数学建模·r语言
z落落10 小时前
C# WinForm Socket 转串口设备服务器+Modbus CRC16校验+Socket 客户端
服务器·开发语言·c#
外域速览11 小时前
OpenAI 智能体「越狱」风波未平,苹果折叠屏 iPhone Ultra 下周三登场
人工智能·ios·iphone
小灰灰搞电子16 小时前
Rust+Slint 实现动态消息提示框源码分享
开发语言·后端·rust
传奇开心果编程17 小时前
【Rust入门知识点学与练】第21课:Trait 进阶 Advanced Traits
开发语言·学习·rust
新时代牛马17 小时前
字符设备驱动完整篇:从 cdev_add、file_operations 到chrdev_open 与排障
开发语言·python