惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
博客园_首页
博客园 - 【当耐特】
量子位
S
SegmentFault 最新的问题
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
T
Tailwind CSS Blog
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
Y
Y Combinator Blog
博客园 - 聂微东
The Cloudflare Blog
小众软件
小众软件
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
H
Help Net Security
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享

肘子的 Swift 记事本 | Fatbobman's Blog

iPhone Duo 带来的机遇与挑战 -- 肘子的 Swift 周报 #153 当 Mac mini 的价格不再 mini -- 肘子的 Swift 周报 #152 SwiftData:优化从建模开始 举手之劳 -- 肘子的 Swift 周报 #151 从使用 AI 到委托 AI(下):我想要的可委托性 AI 想放弃了,人没有 -- 肘子的 Swift 周报 #150 从使用 AI 到委托 AI:我的一些思考 越来越慢的 App Review,拦住了谁? -- 肘子的 Swift 周报 #149 ContentBuilder 解析:SwiftUI 类型检查性能提升的秘密 Apple Intelligence 已通过中国政府审核,即将在中国提供服务 -- 肘子的 Swift 周报 #148 在 SwiftUI Text 中控制孤行:挖掘未公开的 avoidsOrphans 热茶还是冰咖啡 -- 肘子的 Swift 周报 #147 Liquid Glass:UIKit 适配踩坑实录 不是模型变慢了,是任务变大了 -- 肘子的 Swift 周报 #146 当灵感跑在了结果前面 -- 肘子的 Swift 周报 #145 当每一次写入都有了新价格 -- 肘子的 Swift 周报 #144 当 Linux 成为“空气”:容器、Agent 与不再重要的“桌面之争” -- 肘子的 Swift 周报 #143 两个 SwiftUI 动画 Bug 排查小记 SPI 加入 Apple,Swift 迈向自举 -- 肘子的 Swift 周报 #142 Swift 还让你 Excited 吗? -- 肘子的 Swift 周报 #141 从 Size Class 到可用空间,horizontalSizeClass 还可靠吗? WWDC 26:AI 帮你看完了,然后呢? -- 肘子的 Swift 周报 #140 WWDC 2026 初印象:符合预期,但更务实 -- 肘子的 Swift 周报 #139 Core Data + Observation:从属性级响应到心智解放 稳定 > 新功能 -- 肘子的 Swift 周报 #138 用自定义 Layout 化解 SwiftUI List 的行高与间距跳变 从社区路标到生态基石:Dave Verwer 的新篇章 -- 肘子的 Swift 周报 #137 消失的 WWDC 愿望单 -- 肘子的 Swift 周报 #136 CocoaPods 正在退场,SwiftPM 才刚到第二章 -- 肘子的 Swift 周报 #135 让 AI 从称手到称心 -- 肘子的 Swift 周报 #134
Swift 6 编译加速:启用 Swift-Syntax 预构建 (Prebuilts)
东坡肘子 · 2025-06-06 · via 肘子的 Swift 记事本 | Fatbobman's Blog

Read in English

🔍

东坡肘子 (更新于 )

核心摘要:Swift 宏(Macros)的强大依赖于庞大的 SwiftSyntax 库,这往往拖慢了项目的冷启动编译速度。从 Swift 6.1.1 开始,通过启用“预构建(Prebuilts)”功能,可以避免重复编译该库,显著缩短构建时间。

Swift 5.9 引入宏功能后,开发者纷纷开始定制、使用自定义宏以提升开发效率。然而,宏依赖的 SwiftSyntax 库源码庞大,每次清理构建文件夹后重新编译都会消耗大量时间。

Swift 6.1.1 (Xcode 16.4) 起,苹果引入了预构建版本的 Swift-Syntax 支持。开发者只需简单配置,即可直接使用二进制产物,无需从源码编译。

开启方法

1. Xcode 开发环境

在终端执行以下命令,修改 Xcode 的隐藏配置以启用预构建支持:

Bash

# 开启预构建支持
defaults write com.apple.dt.Xcode IDEPackageEnablePrebuilts YES

# 如需关闭,执行以下命令
defaults delete com.apple.dt.Xcode IDEPackageEnablePrebuilts

2. 命令行 (SPM / CI 环境)

如果你在 CI/CD 流水线或终端中使用 Swift Package Manager,请在命令中添加参数:

Bash

swift build --enable-experimental-prebuilts
swift test --enable-experimental-prebuilts

注意事项

  1. 版本要求:必须使用 Swift 6.1.1 (Xcode 16.4) 或更高版本。
  2. 缓存清理:首次启用该功能前,建议彻底清理旧的构建缓存,否则可能无法立即生效:
    • Xcode: Product -> Clean Build Folder,建议手动删除 DerivedData
    • CLI: 删除项目根目录下的 .build 文件夹。
  3. 网络环境:预构建的二进制文件需要在解析 Package 时下载,请确保网络环境能够访问苹果的 CDN 或相关的镜像源。

效果对比

启用预构建后,编译自定义宏项目由数十秒缩短至几秒,极大提升构建体验。

延伸阅读

相关提示

订阅 Fatbobman 周报

每周精选 Swift 与 SwiftUI 开发技巧,加入众多开发者的行列。

立即订阅