Swift源码编译

最近在网上经常能看到源码编译的文章,整理一下关于源码编译的问题。

准备工作

硬件环境

  1. Macbook Pro (Retina, 15-inch, Mid 2015)
  2. 磁盘空间**60G**

软件环境

  1. macOS Big Sur 11.2.3
  2. Xcode 12.4 (12D4e)
  3. Visual studio Code (1.55.2)
  4. Python 3.9.4
  5. cmake 3.20.1
  6. ninja 1.10.2
1
brew install cmake ninja

macOS,Xcode,swift最好用对应的版本,以防等待半个小时失败后骂骂咧咧

编译步骤

一、克隆 swift 源码

  1. 创建文件夹,并进入该文件夹

    1
    mkdir swift-source && cd swift-source
  2. 开始克隆代码

    1
    git clone --branch  swift-5.3.2-RELEASE git@github.com:apple/swift.git

    5.4版本克隆下来842M

二、拉取编译需要的依赖(git submodule)

  1. 切换到swift-source文件夹(注意看
    1
    2
    # 如果在这个文件夹请忽略
    cd swift-source
  2. 执行脚本
    1
    ./swift/utils/update-checkout --tag swift-5.4-RELEASE --clone

执行结果

  1. 如果出现Git错误请执行如下命令
1
git config --global http.postBuffer 524288000 && git config --global http.sslVerify "false"
  1. 文件大小大概3.67G左右(包含开始克隆的Swift源码)

三、编译

编译的过程中可以使用ninja,也可以使用Xcode。由于Xcode需要和特定版本绑定,并且Xcode编译之后的支持性不是特别好。推荐使用njnja来作为编译工具。

使用ninja编译(推荐)

1
./swift/utils/build-script -r --debug-swift-stdlib --lldb

使用Xcode编译

1
./swift/utils/build-script -x -R --debug-swift

输出没有Error代表编译完成

编译是挺耗时并且烧设备。我的Mac温度到了95℃