前言
为了后续swift的学习需要,我们第一步首先是把环境搭建好,这样后面我们就能更方便的查看底层源码,跟进流程。
目前我是在mac最新的系统搭建环境的👇
一、准备工作
- 首先安装VSCode,下载链接👉 https://code.visualstudio.com/Download
VSCode版本👇
下载完成后点击安装,打开VSCode,安装插件👇
- 编译软件ninja的安装
我们采用的是homebrew方式安装
- 未安装homebrew
则先安装homebrew官网地址,打开【终端】,输入指令👇
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 已安装homebrew
- 安装cmake
brew install cmake
- 安装ninja
brew install cmake ninja
注意,安装homebrew时间可能有些长,请耐心等待!
二、Swift源码包准备
swift
是开源语言
,所以我们可以在github
上下载最新源码
。 swift官方地址
2.1 下载源码
新建文件夹swift-source
,打开终端,进入该文件夹,git指令下载👇
git clone --branch swift-5.3.1-RELEASE https://github.com/apple/swift.git
注意:请下载
匹配
Xcode版本的release源码
版本。
2.2 update-checkout
在swift-source
目录下,执行如下指令👇
./swift/utils/update-checkout --tag swift-5.3.1-RELEASE --clone
注意:这一步非常重要。
源码目录中千万不要含有中文
!
因为update-checkout会clone编译swift相关库,不然后面编译swift源码时一定失败。
2.3 编译
同样也是输入指令👇
./swift/utils/build-script -r --debug-swift-stdlib --lldb
注意:使用的是ninja编译,必须先安装好ninja
编译耗时比较久,我自己编译大概耗时1.5h左右
三、运行Swift源码项目
- 打开源码项目
打开VSCode,菜单栏选择File —> Open…—>定位到文件夹【swift-source】
,点击【打开】
👇
-
再添加脚本配置json文件👇
代码如下👇
"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}"
}
]
- 点击运行👇
出现下面这张图,就代表运行成功👇
四、断点调试
4.1 调试前需要做的准备工作
- 找到编译后的【LLDB】目录,将里面所有文件复制粘贴到【CodeLLDB】目录,如下图
编译后的【LLDB】目录👇
系统的【CodeLLDB】目录👇
定位到你的系统文件夹目录,cmd + shift + >
显示出隐藏文件夹,如下图👇
- 单独拷贝
lldb
,并改库名👇
4.2 开始调试
- 打断点
源码中搜索swift_allocObject 如下图👇
- 然后切换到终端,输入示例代码👇
- 再输入调用代码,触发断点👇
完美触发,👍
总结
本篇文章详细讲解了swift源码项目环境的搭建,后面我们进入swift底层源码学习,跟进底层源码流程所需。希望大家自己可以亲自尝试一下,哈哈!