Swift进阶 01:Swift源码编译

2021-01-20  本文已影响0人  源本平凡

编译环境

编译步骤

准备工作

第一步:clone swift 源码

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

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

第二步:update-checkout

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

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

注意:文件的路径避免出现中文,中文有很大的概率会报错

update-checkout

第三步:采用ninja编译

编译过程中既可以使用ninja,也可以使用Xcode进行编译。但是Xcode编译后的支持性不是特别好,所以这里就使用了ninja来作为编译工具。

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

编译成功

编译成功时包的大小如下入所示


image.png

第四步:使用VSCode调试swift

image.png image.png

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

image.png
{
    "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}"
        }
    ]
}

如果找不到launch.json文件,把swift-source整个文件夹拖进VSCode中,就会有launch.json文件了

image.png

然后过掉断点

image.png

看到以下结果就表示运行成功了

image.png image.png image.png image.png

这样,我们就可以愉快的调试swift源码了。

上一篇下一篇

猜你喜欢

热点阅读