网上下载的Swift源码怎么用?Xcode编译超实用教程

2026-02-27 0 422

你是否曾对着Xcode里的Swift源码一头雾水,想调试却无从下手?别急,手把手教你用Xcode编译调试Swift源码,这套操作不仅能让你看懂底层逻辑,更是突破技术瓶颈的硬核技能。

准备工作环境搭建

brew install cmake ninja

工欲善其事必先利其器,首先确保你的Mac上安装了cmake和ninja编译工具。我的电脑本地环境是macOS 12.4,Xcode 13.4.1,通过homebrew安装cmake 3.18.0版本和ninja 1.10.2版本。

Xcode: 12.3
swift版本:Apple Swift version 5.3.2 (swiftlang-1200.0.45 clang-1200.0.32.28)
Target: x86_64-apple-darwin19.6.0
cmake: cmake version 3.18.0
python: Python 2.7.16

在家目录下新建swift-source文件夹,然后从GitHub拉取Swift源码。特别注意拉取的源码版本必须和你当前Xcode自带的Swift版本一致,否则编译时会遇到各种兼容性问题。

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

依赖拉取与编译

./swift/utils/update-checkout --tag swift-5.3.2-RELEASE --clone

这一步必须翻墙操作,因为需要从苹果服务器和GitHub拉取大量依赖库,包括llvm、cmark、swift-corelibs-foundation等十几个子项目。网络不好的话可能得花上半小时。

截屏2022-02-07 上午11.16.04.png

./swift/utils/build-script --release-debuginfo --debug-swift-stdlib -x --skip-ios --skip-watchos --skip-tvos --swift-darwin-supported-archs="x86_64"

苹果官方提供了build-script编译脚本,位于swift源码目录的utils文件夹下。使用./swift/utils/build-script –help可以查看所有编译选项,建议加上–release-debuginfo参数方便后续调试。

Xcode工程生成

编译完成后,会在swift-source目录生成build文件夹,里面有一个Xcode–的文件夹,这就是我们需要的Xcode工程。打开这个工程,你会看到swift、llvm、cmark等多个子项目。

截屏2022-02-10 下午11.36.46.png

这个工程已经配置好了所有依赖关系,可以直接用来调试Swift源码。注意不要用自己新建的Xcode工程,否则依赖路径配置会非常麻烦。

调试设置关键点

截屏2022-02-11 上午12.07.37.png

在Swift.xcodeproj里面,需要新建一个Scheme,并把编译好的环境变量下的可执行文件作为调试目标。比如你要调试swift编译器,就选择bin目录下的swift可执行文件。

截屏2022-02-11 上午12.10.54.png

将Build Settings中的Skip Install设置为NO,这样编译后的产物才会被正确安装。在main.swift中添加测试代码,比如简单的print(“hello”),然后在对应的cpp文件中设置断点。

常见问题解决方案

截屏2022-02-11 上午12.12.24.png

第一个坑是cmake版本问题,如果你用3.19以上版本,会遇到”new build system”不兼容的错误。解决方案是回退到cmake 3.18.0,从官网下载dmg安装后,用sudo命令创建软链接到/usr/local/bin。

截屏2022-02-11 上午12.13.06.png

第二个问题是生成工程后编译报错找不到某些文件。这是因为Xcode的构建索引没更新,手动在Xcode中选择对应的target编译一次,生成缺失的文件即可。

架构兼容性问题

截屏2022-02-11 上午12.15.24.png

最后遇到的是架构报错,提示找不到arm64的.o文件。我的电脑是Intel芯片,根本不需要arm64架构。解决方案很简单,在build目录下找到对应的文件夹,复制一份并改名为arm64,骗过编译器检查。

还有个cmark依赖问题,如果提示找不到某个.a文件,就单独编译一下cmark项目,生成静态库后再编译整个Swift工程,基本就能顺利通过了。

你是否有过想深入底层却又被环境配置劝退的经历?欢迎在评论区分享你的踩坑故事,点赞收藏这篇文章,下次调试Swift源码时就能直接照搬操作了。

截屏2022-02-10 下午11.44.01.png

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 行业资讯 网上下载的Swift源码怎么用?Xcode编译超实用教程 https://www.7claw.com/2826242.html

七爪网源码交易平台

相关文章