阅读 2159

Swift源码编译

编译环境

  • 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,如果想要编译最新的源码,可以自己去官网找到最新的分支XcodeswiftmacOS最好用对应的版本。
  • 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
  • 完成后安装插件CodeLLDBCode 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

文章分类
iOS
文章标签