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

  • ccache
  • gcc的预编译头

  • 但是,我不知道在什么情况下哪个更好。

    我已经用谷歌搜索了这个问题,并获得了模糊的印象,即ccache完全优于其他。那正确吗?

    最佳答案

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

    ccache缓存给定源文件, header 和所有文件的全部,并缓存已编译的对象模块。从技术上讲,ccache会使用整个预处理的源翻译单元,对其进行哈希处理,然后缓存生成的对象模块。

    当从不同的源转换单元反复对相同的头文件进行#include d转换时,预编译的头可节省一些时间。但是,如果相同的源代码被反复编译,则预编译的头文件将无济于事(除了使用预编译的头文件的唯一好处之外)。这就是ccache进入的地方,ccache悄悄地跳过了整个编译阶段,而只是从缓存中获取以前编译的对象模块。

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

    关于c++ - ccache是​​否完全优于gcc的预编译头文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40252267/

    10-11 00:15
    查看更多