我刚刚将一个 Objective-C(++) 项目转换为纯 C++。在移动越来越多的代码时,我注意到构建时间增加了很多。
我的项目目前分为几个框架/dylibs 和一个使用这些框架的主项目。
我做了一些研究,发现基本上推荐了三件事来减少构建时间:
- 减少头文件依赖
- 使用统一构建
- 使用像 ccache 这样的工具,不要一直重做不需要的工作
我实现了 ccache,它工作得很好,我能够大大减少构建时间。
我有点不确定是否要减少头文件依赖和统一构建。我读到统一构建的一大缺点是,如果您对一个有意义的源文件进行更改,则需要重新编译所有内容。然而,这对框架来说不是问题,因为如果它们发生变化,无论如何都需要重新编译它们。
我读到使用“伞形头文件”(例如“MyFramework.h”)是一种不好的做法,它将包含给定框架的所有公共头文件,尽管您可能只需要其中的几个。
Cocoa 在任何地方都使用伞头文件,这当然比为每个源文件挑选所需的确切标题要容易得多。但是,当使用统一构建时,每个框架只有一个标头,对吗?
选择单个标题是否仍然有意义,或者在统一构建中使用“伞形标题”是否可以?
在这里摸摸摸摸,不想花时间实施最终无济于事的技术。
谢谢你的帮助!