编译环境
- 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
- 接下来配置
Json
文件
- 修改
program
为${workspaceFolder}/build/Ninja-RelWithDebInfoAssert+stdlib-DebugAssert/swift-macosx-x86_64/bin/swift
后面为你编译好的swift的路径 -
运行起来之后
-
过掉断点
-
调试代码
- 在调试代码的时候,可能区域3没有任何显示(原因是CodeLLDB这个插件没有支持swift语言),解决方法如下
- 做下面步骤的时候最好先备份,防止误操作。
- 找到
CodeLLDB
的安装目录
- 然后找到编译过后的
lldb
文件目录,把目录里面的文件全部拷贝到上面的目录中
- 将swift编译后
lldb
文件复制到vscode lldb/lib
目录下,删除本来就存在的liblldb.dylib
文件,并将lldb
文件重命名为liblldb.dylib
。