2016-10-26 74 views

回答

4

预编译头文件和ccache用于完全不同的用例。 ccache可以与预编译头一起使用,它们不是互斥的。

ccache缓存整个给定的源文件,标题和全部,缓存编译后的对象模块。从技术上讲,ccache需要整个预处理源翻译单元,对其进行散列并缓存结果对象模块。

当不同的源翻译单元重复使用相同的头文件时,预编译头可节省一点时间。但是,如果相同的源代码被重复编译,预编译头文件不会有帮助(超出使用预编译头文件的唯一好处)。这就是ccache进来的地方,ccache悄悄地跳过了整个编译阶段,只是从缓存中获取以前编译的目标模块。

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