ccache完全excel是gcc预编译头文件的手段吗?

Does ccache totally excel the means of gcc's precompiled headers?

为了加快gcc的编译速度,我们有两个选择:

但是不知道什么情况下哪个更好

我用谷歌搜索了这个问题,得到一些模糊的印象,即 ccache 完全是 excel 另一个。是吗?

预编译 headers 和 ccache 用于完全不同的用例。 ccache可以和预编译的header一起使用,互不排斥

ccache 缓存整个给定的源文件,headers 和所有缓存已编译的 object 模块。从技术上讲,ccache 获取整个预处理的源翻译单元,对其进行哈希处理,并缓存生成的 object 模块。

当来自不同源翻译单元的相同 header 文件重复 #included 时,

预编译 headers 可以节省一点时间。但是,如果重复编译相同的源代码,预编译 header 就无济于事(除了使用预编译 header 的唯一好处)。这就是 ccache 的用武之地,ccache 悄悄地跳过了整个编译阶段,只是从缓存中获取 previously-compiled object 模块。

因此,比较哪种方法更好,ccache 或预编译 headers 并没有多大意义。他们解决了两个不同的问题。