Swift源码编译-让底层更清晰

WWDC2020 大会将经过 Apple Developer AppApple Developer网站免费向全部开发者开放! 从去年火遍全网的 SwiftUI 以及 Combine 到今年全新的“Swift Student Challenge” 无时不刻都在透露 Swift 时代已经来临html

本人也是Swift一个深度着迷的开发者,而且有点喜欢玩底层! 很是感谢苹果爸爸 Swift 高度开源, 可是平常开发过程当中总感受仍是缺了一点什么...git

其实说白了要是可以我不能懂的底层,直接跑进源码看看流程,分析一下原理!这就完美了... 因此我坚决果断:Swift源码编译走起 github

着急尝鲜的小伙伴,请点击个人快速通道:Swift源码编译-Github地址macos

1、Swift编译准备

  • apple / swift 官网地址 这里clone咱们须要编译的源码
  • 版本准备:macOS 10.15.3 Xcode 11.5 (这是我当前的版本,应该是只须要 Xcode 11.2)
  • 这里最新的源码编译时须要 Xcode 12.0 我本人如今没有升级,何况还只是beta 就不去玩,毕竟还要一段时间!以防不稳定
  • 因为编译速度仍是有点慢,建议电脑性能稍微高一点,具体大家本身定
  • 网络建议:小楼梯 (不解释),稳定网线
  • 最重要的就是:keep patient (确定会有各类问题报错,仍是耗时很是严重:1-2h 这是正常现象)

2、开始编译吧

首先编译的手法有不少:Xcode - Ninja - Linux - VScode !各有各的方便,这里咱们不去说其余的先来一个你们很是熟悉的:Xcodeswift

1:准备编译目录

建立一个你喜欢的文件目录xcode

mkdir swift-source
cd swift-source
复制代码

2:clone 源码

这里用的是 swift-5.2.4-RELEASE 这个稳定版本,对于如今开发来讲够了!将来更新再说,请记住必定要根据我这个版本,由于版本不同会和你Xcode不兼容,后面报错,我可就不负责了:哈哈哈哈安全

git clone --branch swift-5.2.4-RELEASE
https://github.com/apple/swift.git
复制代码
  • 这里若是你有小楼梯,应该很快的

3:clone 补充核验

  • 跳到swift文件下面 utils/update-checkout
  • clone 出后面编译须要的文件
  • 这很重要,由于update-checkout 将检出Swift源目录旁边的存储库
  • 这一步也是比较耗时的,这个时候你能够:Have a cup of coffee
./swift/utils/update-checkout --tag swift-5.2.4-RELEASE --clone
复制代码

4:buid Swift (waiting)

  • 利用swift源码中的脚本编译
./swift/utils/build-script -x -R --debug-swift
复制代码
  • 苹果github上面也指出了几个编译实例,你们也能够本身去玩!
  • 若是你编译还不是很熟练,也想避免踩坑(毕竟这一踩就要1-2h) 跟我给你的步骤走,安全又可靠!
utils/build-script --release-debuginfo --debug-swift # Swift frontend built in debug
utils/build-script --release-debuginfo --debug-swift-stdlib # Standard library built in debug
utils/build-script --release-debuginfo --debug-swift --force-optimized-typechecker # Swift frontend sans type checker built in debug
复制代码

固然也会有一些玩得好的,想要更多参数命令,推荐这个脚本查阅 ./swift/utils/build-script -h 因为篇幅缘由不展开,你们能够自行去玩!好比说编译标准库和编译LLDB以及所有 等等。。。bash

构建完上一步,就会进入很是漫长难受的等待过程!若是以为无聊能够趁这个时间去看看我其余博客:Cooci_和谐学习——不急不躁markdown

⚠️:BUILD SUCCEEDED 这个字眼好好看哦!😄网络

3、调试Swift源码

要在 Xcode 中打开 Swift 项目,请打开/swift-source/build/Xcode-ReleaseAssert+swift-DebugAssert/swift-macosx-x86_64/Swift.xcodeproj。它将为全部可用目标自动建立不少方案。常见的调试流程将涉及:

  • 选择 swift scheme。
  • 调出 scheme 编辑器(⌘⇧<)。
  • 选择 Arguments 选项卡,而后单击 +
  • 添加命令行选项,这个根据自行需求设置,若是没有特殊需求,正常编译
  • 关闭scheme 编辑器。
  • 编译并运行。

另外一个选择是将方案更改成 Wait for executable to be launched,而后在终端中运行构建产品。

到目前为止,基本操做就完毕了,你们能够自由自在的畅玩在Swift的海洋,注意发量 ~ 哈哈哈~

4、构建失败缘由分析

  • clone 失败大几率就是网络问题

  • 确保使用正确版本的 Xcode

  • 若是您已更改 Xcode 版本,但仍然遇到与Xcode版本有关的错误,请尝试将传递 --cleanbuild-script

  • 当发布新版本的 Xcode 时,您能够经过传递 --reconfigure 选项来更新构建,而无需从新编译整个项目。

  • 确保全部存储库都是上述 update-checkout 命令中最新的

感谢

Swift源码编译-Github地址

OK 这篇文章就先写到这里,你们能够先行去下载尝鲜,若是以为还能够还请不要吝啬你的 点赞和star

相关文章
相关标签/搜索