美文网首页
iOS开发-Swift进阶之源码编译!

iOS开发-Swift进阶之源码编译!

作者: iOS鑫 | 来源:发表于2021-05-25 13:50 被阅读0次

    swift进阶总汇

    编译环境

    • MacOS Big Sur 11.0.1
    • 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相关的库,否则在编译时一定会失败,这步很关键!(编译过程会很长,建议休息时间编译)

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

    这里编译需要注意一点:文件的路径尽量避免出现中文,中文有很大的概率会报错

    第三步:采用ninja编译

    编译过程可以使用ninja,也可以使用Xcode,但是Xcode编译之后的支持性不是太好,所以这里采用ninja编译

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

    第四步:使用VSCode调试Swift

    • 首先,在VSCode中安装插件

    • 添加配置文件launch.json,并修改

      需要注意的是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}"
            }
       ]
    }
    
    
    • 点击Debug运行,断住

      然后过掉断点

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

    • 然后切换至终端,我们可以开始源码调试啦。

      • 在终端中输入以下代码(也可以从swift文件拷贝)

      • 源码中搜索swift_allocObject(这个在后面文章会讲解,仅作为调试的例子),加上断点

      • 继续在终端输入var t = CJLTeacher(),回车

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

    作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发公众号:编程大鑫,不管你是小白还是大牛都欢迎入驻 ,让我们一起进步,共同发展!

    相关文章

      网友评论

          本文标题:iOS开发-Swift进阶之源码编译!

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