ccache是一个编译器缓存器,可以缓存之前的编译产物,当相同的编译行为发生时,直接使用缓存的产物。
使用实例:

 ccache g++ main.cpp -o main

你可能会问,既然make能够自动侦测依赖的变化,若依赖并未变化,则不会再重新编译。那何必要再搞个编译产物缓存呢?

在以下几个场景下,ccache可能会很大程度上加快编译速度:

  1. 如果不得不先make cleanmake,ccache缓存将加快重新编译的速度。
  2. 如果在大型项目的团队开发中,需要频繁在同一个代码库的不同项目分支中切换,或者你的不同文件夹中有着同样代码库的不同项目分支。每次切换分支/切换项目时,重新编译时间很耗费时间的事情。这时,即使相同的源码不在同一个文件夹中,你也能够从ccache取到,已经缓存的的编译产物/目标文件。而这些目标文件其实都是并不需要重新编译的(代码没有变化)。
  3. 另外一个十分常见的场景:团队多个成员在一个compiler server上编译代码,利用ccache进行缓存将有效节省资源提高编译速度。

From: https://ccache.dev/