9

据我所知,ccache 通过捕获以前的编译并检测何时再次完成相同的编译来加速编译。然而,makefile 做同样的事情。那么我们为什么需要ccache呢?我们什么时候使用它?谢谢!

4

2 回答 2

5

来自http://ccache.samba.org/

如果你曾经运行过make clean; make,你可能会从 ccache 中受益。出于各种原因,开发人员通常会对项目进行干净的构建,这会丢弃您之前编译的所有信息。通过使用 ccache,重新编译速度更快。

使用 ccache 的另一个原因是相同的缓存用于不同目录中的构建。如果您将软件的多个版本或分支存储在不同的目录中,则构建目录中的许多目标文件可能会从缓存中获取,即使它们是为另一个版本或分支编译的。

第三种情况是使用 ccache 来加速服务器执行的干净构建或定期检查代码是否可构建的构建农场。

您还可以在用户之间共享缓存,这在共享编译服务器上非常有用。

于 2012-04-13T07:22:08.663 回答
4

除了加速构建系统损坏所必需的干净构建的可疑好处以及拥有共享缓存的偶然好处之外,即使对于一个孤立的、完美的基于 mtime 的构建系统,也存在 ccache 的合法使用:

当您在分支之间来回跳转(不是谈论单独的目录)或变基时,最终会触及一大堆文件,或者如果您不走运,则包含一个中央标题(如config.h)在所有地方,您完美的基于 mtime 的构建系统将尽职尽责地重建一切。如果您在过去的某个时间构建了几乎相同的状态,ccache 将加速此重建。

于 2017-07-27T08:55:16.347 回答