Swift进阶 01:Swift源码编译

1,848 阅读2分钟

编译环境

  • MacOS Catalina 10.15.6
  • Xcode 12.1
  • Python 2.7.16
  • brew install cmake ninja

编译步骤

准备工作

  • 新建一个文件夹,命名swift-source

  • 拉取资源需要访问外网,所以需要科学上网

第一步:clone swift源码

这里编译的是swift-5.3.1-Release。可以在官网找到对应的分支,注意:swift源码版本需要与Xcode版本匹配(官方编译文档有说明)

git clone --branch swift-5.3.1-RELEASE https://github.com/apple/swift.git

第二步:update-checkout

这一步是clone编译swift相关的库,否则在编译时一定会失败,这步很关键!(编译过程会很长)

./swift/utils/update-checkout --tag swift-5.2.4-RELEASE --clone

文件的路径尽量避免出现中文,中文有很大的概率会报错

第三步:使用ninja编译

编译过程可以使用ninja,也可以使用Xcode,但实际测试Xcode编译之后的支持性不是太好,所以这里使用ninja作为编译工具

./swift/utils/build-script -r --debug-swift-stdlib --lldb

第四步:使用VSCode调试Swift

  • VSCode下载地址:官网下载

  • VSCode 汉化(系统设置中文)

  1. Mac 快捷键:command + shift + p,输入搜索 configure language
  2. 弹出 select display language 输入框,选择 install additional languages...选项
  3. 选择中文(简体)的扩展包,点击install 安装
  4. 安装完成后,点击右下角的提示resstart now 重启vs code ,或手动关闭重新打开生效
  • 在VSCode中安装 CodeLLDB 插件

  • 添加配置文件launch.json

    program的路径需要与你编译的文件路径一致

  • 点击Debug运行,断住,过掉断点继续执行

  • 看到以下结果就是运行成功了

  • 切换到终端调试源码(例子)

  • 在终端中输入以下代码

  • 源码中搜索swift_allocObject,此处加上断点

  • 继续在终端输入var t = LZTeacher(), 回车发现走到断点

到这里我们就可以正常调试源码了~~