编译&调试swift5.7源码

时间:2024-07-05 21:16:31
  • 新建一个文件夹(用于存放clone下来的swift源码),然后进入该文件夹。本例中是在终端执行了mkdir swift-project,然后执行cd swift-project/实现;
  • 在终端中执行:git clone --branch swift-5.7.1-RELEASE https://github.com/apple/swift.git,目的是把swift的swift-5.7.1-RELEASE版本的代码clone下来;
  • 在终端中执行:./swift/utils/update-checkout --tag swift-5.7.1-RELEASE --clone,目的是下载编译swift所需要的代码库,当看到如下图所示的信息时,说明下载成功了;
    在这里插入图片描述
  • 安装编译工具(cmake、ninja、sccache):在终端上执行brew install cmake ninja sccache。(但是,这种方式安装的是这3个工具的最新版本,为了和本文环境对齐,所以可以参考这篇文章来通过brew安装指定版本)
  • 在终端执行cd swift,目的是切到swift文件夹下;
  • 在终端执行utils/build-script --xcode --release-debuginfo --debug-swift-stdlib --skip-build-benchmarks --swift-darwin-supported-archs "$(uname -m)" --sccache --skip-ios --skip-tvos --skip-watchos --bootstrapping=off,目的是生成包含来swift源码的xcode工程。但不幸的是,你会遇到这个错误(error: using unsupported Xcode version,如下图所示),解决方法很简单:在终端执行export SKIP_XCODE_VERSION_CHECK=1,即设置该环境变量。设置之后再次执行utils/build-script --xcode --release-debuginfo --debug-swift-stdlib --skip-build-benchmarks --swift-darwin-supported-archs "$(uname -m)" --sccache --skip-ios --skip-tvos --skip-watchos --bootstrapping=off
    在这里插入图片描述
    编译成功后,结果如下图。
    在这里插入图片描述
  • 此时我们可以打开如下图所示的build文件夹,然后可以看到Swift.xcodeproj文件。
    在这里插入图片描述
  • 我们用xcode打开Swift.xcodeproj文件,此时会弹出如下图所示的框,我们选择“automatically create schemes”,目的是让xcode给swift工程自动创建好可以编译的scheme。
    在这里插入图片描述
  • 我们在该工程内直接创建一个我们自己的target,操作如下3张图所示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 给我们创建的target(本例指的是MySwiftaa)添加对ALL_BUILD库的依赖,操作如下第1张图所示,添加后的结果如下面第2张图所示。
    在这里插入图片描述
    在这里插入图片描述
  • 把我们创建的target(本例指的是MySwiftaa)中的Enable Handened Runtime改为NO
    在这里插入图片描述
  • 在MySwiftaa中的main文件中写入如下图的代码
    在这里插入图片描述