Swift进阶00:Swift源码编译

编译环境

  • macOS Catalina 10.15.7
  • Xcode 12.2
  • Python 2.x
  • 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相关的库(过程很长,3小时起跳)
git clone --branch swift-5.3.1-RELEASE https://github.com/apple/swift.git

第三步:编译

编译过程可以使用ninja,也可以使用Xcode,但是Xcode编译之后的支持性不是太好,所以这里采用ninja编译
./swift/utils/build-script -r --debug-swift-stdlib --lldb

第四步:使用VSCode调试Swift

  1. 首先安装插件 CodeLLDB
2251862-21c4a2ee54da7308.png

2.配置json文件

2251862-81d320da8eec98ce.png

注意:program路径需要与编译文件路径一致

{
    "version": "0.2.0",
    "configurations": [
    
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug",
            "program": "${workspaceFolder}/build/Ninja-RelWithDebInfoAssert+stdlib-DebugAssert/swift-macosx-x86_64/bin/swift",
            "args": [],
            "cwd": "${workspaceFolder}"
        }
   ]
}

3.点击Debug运行后断住,继续点击剪头过掉断点

2251862-033f35ccd9550c46.png

4.看到以下结果就代表成功了

2251862-de860a2b10893d5d.png

5.切换到VScode终端代码进行调试

截屏2020-12-08 下午3.57.15.png

总结:

  • 编译过程耗时较长,建议大家多尝试,本人尝试了很多次才成功,同一个文件可能最终结果不相同,目前还未发现原因。。。本人最终还是使用了别人的第二步版本,自己执行的第三步,第一次报错,第二次成功,就很奇妙 - -
  • 使用VSCode调试源码的目的主要是为了看清Swift底层工作原理,例如上图初始化的过程中底层实际是走到_swift_allocObject_这个方法中,方便大家自行探索

你可能感兴趣的:(Swift进阶00:Swift源码编译)