编译环境
- xcode :Mac系统自带
- Python :Mac系统自带
- cmake:通过
brew list命令查看是否安装,没有执行brew install cmake - ninja:通过
brew list命令查看是否安装,没有执行brew install ninja
编译
clone swift源码
- 执行命令
git clone --branch swift-x.x.x-RELEASE https://github.com/apple/swift.git - 可以通过
xcrun swift -version查看当前电脑swift的版本 - 这里我编译的是
swift-5.2.4-Release,如果想要编译最新的源码,可以自己去官网找到最新的分支,Xcode,swift,macOS最好用对应的版本。 -
clone完成的文件在700M左右
update-checkout
- 在上面的文件夹目录下执行命令
./swift/utils/update-checkout --tag swift-x.x.x-RELEASE --clone - 这一步的目的是拉取我们在编译源码过程中所需要的其它分支文件,如果不拉取后续第三步编译swift源码的时候一定会失败。
- 完成之后的文件大小约3G
编译源码
- 编译的过程中可以使用
ninja,也可以使用Xcode。但是实际测试过程中Xcode编译之后的支持性不是特别好。推荐使用ninja来作为编译工具。 - 执行
./swift/utils/build-script -r --debug-swift-stdlib --lldb,可能需要等待一段时间,最后编译的文件在50G左右
使用VSCode调试Swift
- 下载一个
VSCode - 完成后安装插件
CodeLLDB、Code Runner
EXTENSIONS MARKETPLACE.jpg
- 接下来配置
Json文件
image.png
- 修改
program为${workspaceFolder}/build/Ninja-RelWithDebInfoAssert+stdlib-DebugAssert/swift-macosx-x86_64/bin/swift后面为你编译好的swift的路径 -
运行起来之后
-
过掉断点
-
调试代码
image.png
- 在调试代码的时候,可能区域3没有任何显示(原因是CodeLLDB这个插件没有支持swift语言),解决方法如下
- 做下面步骤的时候最好先备份,防止误操作。
- 找到
CodeLLDB的安装目录
CodeLLDB安装目录
- 然后找到编译过后的
lldb文件目录,把目录里面的文件全部拷贝到上面的目录中
编译好的lldb目录
- 将swift编译后
lldb文件复制到vscode lldb/lib目录下,删除本来就存在的liblldb.dylib文件,并将lldb文件重命名为liblldb.dylib。











网友评论