在Xcode9发布的时候,Apple在Build System上提供了新版本的构建系统(New Build System),具体可见WWDC2017,不过令人失望的是,该新特性的讲解很简短,短到只在一页PPT上露脸,在这短短的时间里,苹果讲述了该构建系统的优点:降低构建开销,尤其可以降低大型项目的构建开销。
当然对于该新特性的使用,苹果为开发者提供了足够的过度时间。在Xcode9中,该构建系统没有设置为默认的构建系统,而在Xcode10中,苹果将该系统设置为默认的构建系统,开发者可以通过Xcode->File->Project Settings/WorkSpace Settings->Build System
在新旧构建系统间切换。
幸运的是,苹果在WWDC2018中讲述了新构建系统在构建时的优化方式,我们接下来就探究一下New Build System
是如何提高构建速度的。当然,该方式可能会引起一些问题,我们在最后进行讨论解决。
一、项目环境准备
在我们实际开发中,我们的项目可能会有依赖多个其他的工程或者说依赖多个第三方库。这些依赖包括两部分,分别为Target Dependencies
以及Link Binary With Libraries
两部分,这二者有一些区别:
Target Dependencies
是指Target所嘘依赖的其他Target,被依赖的Target必须在本Target构建之前就构建完成。除此之外没有任何关联。Link Binary With Libraries
是指最终要Link到Product中的文件,同时在Link到Product中时,需要保证文件存在,这就要求在构建Target时该项目下的文件必须提前构建完成。
说白了,Target无论通过哪种依赖,都需要保证被依赖的内容在Target构建前就已经被构建成功。
接下来我们就构建一个项目环境,并设置好依赖关系,此处我们使用WWDC演示中提供的项目结构。