美文网首页
Swift进阶 01:Swift源码编译

Swift进阶 01:Swift源码编译

作者: 源本平凡 | 来源:发表于2021-01-20 10:21 被阅读0次

    编译环境

    • macOS Big Sur 11.1
    • Xcode 12.2
    • Python 2.x
    • brew install cmake ninja
    • VSCode

    编译步骤

    准备工作

    • 新建一个文件夹,命名为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
    
    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

    • 首先,在VSCode中安装codelldb插件
    image.png
    • 添加配置文件launch.json,并修改
    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
    • 点击Debug运行,断住

    然后过掉断点

    image.png

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

    image.png
    • 然后切换至终端,我们可以开始正常的源码调试了
      • 在终端输入以下代码(也可以从swift文件中直接拷贝)
    image.png
    • 源码中搜索swift_allocObject,加上断点
    image.png
    • 继续在终端输入var sun = Sunrise(),回车
    image.png

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

    相关文章

      网友评论

          本文标题:Swift进阶 01:Swift源码编译

          本文链接:https://www.haomeiwen.com/subject/cnkczktx.html