1

我有两个猜测:

它从一开始就编译,但使用 CCACHE 更快

它继续,通过检测已编译的模块

如果我清除 CCACHE 而不是 OUT 目录会发生什么?它会继续还是重新开始?

4

1 回答 1

1

这里有多个层面很重要。

  • 在顶层,您拥有(至少这是我简要了解构建系统的印象)一个 make-system(或类似的东西)。通过调用命令构建特定的“目标”。如果目标已经存在并且是最新的(它所基于的源文件不比创建的目标新),make 将不会调用任何命令
  • make 可以调用的一个命令是编译命令(可选地以“ccache”为前缀)。如果调用了以 ccache 为前缀的命令,ccache 将检查其缓存目录以查看是否有任何可以重用的内容。如果有东西可用,ccache 将简单地将文件从其缓存复制到所需位置。如果没有可用的内容,ccache 将调用编译器命令(然后用结果填充其缓存)。

如果您清除 ccache 缓存目录,则意味着 make 'targets' 仍然存在并且是最新的。这意味着 make 将决定这些目标不需要重新编译。换句话说:它将继续,而不是重新启动。在这一点上,Ccache 甚至还没有出现。

于 2014-11-25T12:31:35.373 回答