Swift 进阶001 -- Swift源码编译

2020-12-14  本文已影响0人  凌云01

编译环境

cmakeninja可通过 brew list查看是否安装

brew list.png

编译步骤

开始前先准备一下:

第一步:clone swift源码

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

这里编译的是swift-5.3.1-Release。可以自行在官网找到对应的分支,需要注意的是:swift源码版本需要与Xcode版本匹配(官方编译文档有说明)。􏱘􏱙目前最新版本是5.3.1。
clone完成文件大概700M。

第二步:update-checkou

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

确保是在当前的swift-source目录下,然后执行上面命令。
这一步很重要,update-checkoutclone编译 swift 相关的库,不然编译一定会失败。(时间有点长,可以喝杯☕️)
这里编译需要注意一点:文件的路径尽量避免出现中文,中文有很大的概率会报错。

安装完如下:


update-checkout succeeded.png

完成后文件大概有3G。

第三步:编译

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

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

编译过程可能会报错:

swift-source.png
看报错信息应该是和CommandLine有关,直接删除Developer下的CommandLineTools,使用Xcode中的就好。
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select -s /Applications/Xcode.app
BUILD SUCCEEDED.png

如果的你的目录有可执行文件swift就编译完成了。


image.jpg 编译完成.png

编译完文件大概有50G。

第四步:使用VSCode调试Swift

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}"
        }
   ]
}

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

这个时候我们可以写swift代码,进行调试


image.png

可以看到本地变量没有任何显示(原因是CodeLLDB这个插件的作者没有支持swift语言),当然并不妨碍调试源代码。

设置本地变量显示支持swift

上一篇下一篇

猜你喜欢

热点阅读