(WWDC) Xcode 构建过程的幕后 —— Clang 编译器

本文介绍了Xcode构建过程中Clang编译器的作用,特别是如何利用头文件映射和模块来提升构建效率。通过实例程序PetWall,详细解释了Clang如何查找和处理头文件,以及如何构建和重用Clang模块,从而减少重复工作并优化构建时间。
摘要由CSDN通过智能技术生成
1306450-7497c8ea9ca3a438.png

 

我们将会了解到和 Clang 相关的两个特性:

  • 如何使用头文件映射(header map)来将 Xcode 构建系统产生的信息传递到 Clang 编译器;
  • 如何使用 Clang 模块(modules)来加速构建;

 

什么是 Clang ?

苹果公司的 C 语言家族的官方编译器:

  • C
  • C++
  • Objective-C
  • Objective-C++

其实,Swift 也需要使用 Clang。

 

编译器会为每一个输入文件生成一个之后用于链接的输出文件。

如果你需要访问一个 iOS API 或者调用你自己的实现,你通常需要在代码中包含一个头文件。

1306450-16e115d984bfff1f.png

头文件就是一个承诺,承诺实现部分存在而且与声明内容相符。

1306450-6ee080355e963bb2.png

如果你只更新了头文件但是忘了更新相应的实现,在编译阶段是不会发生错误,但是在链接阶段会出现问题。

  

现在,让我们结合实例程序 PetWall 来理解如何处理头文件。

1306450-d4324c20bed4d000.png

实例程序 PetWall 内部混合使用了多种语言。

1306450-1cc9a6a5009f7fbb.png

程序主体部分采用了 Swift 编写。

1306450-fbc7608c16365c8c.png

使用了一个用 Objective-C 编写的库 PetKit。

1306450-ee6a4b019b2956a7.png

还使用了一个用 C++ 编写的库 PetSupport。

现在,这个应用的体积随着时间开始膨胀。
我们决定把 Cat 相关的文件移到另一个文件夹中,但是不改动任何实现文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值