2

我正在ccache使用git-worktree. 许多相同的文件在多个目录中共享。问题是ccache不检查文件是否相同,并再次编译。是否有ccache允许它跨多个源目录检查缓存的选项?

4

1 回答 1

4

如果使用ccache(自 3.3 版起默认设置),则将当前工作目录添加到哈希-g中,这只能在同一源目录中获得缓存命中。另一个类似的问题是,如果您在编译器参数中使用绝对路径,那么您需要使用base_dir配置设置。

来自ccache 手册中“在不同目录中编译”部分的更多详细信息:

  • 如果您使用 -g (或类似的)构建以将调试信息添加到目标文件,您必须:

    1. 使用-fdebug-prefix-map=old=new将调试信息重定位到公共前缀的选项(例如-fdebug-prefix-map=$PWD=.);或者
    2. 设置hash_dir = false
  • 如果您在命令行的任何位置使用绝对路径(例如,源代码文件路径或编译器选项的参数,如-Iand -MF),您必须设置base_dir到“基本目录”的绝对路径。然后 ccache 将在计算哈希之前将该目录下的绝对路径重写为相对路径。

于 2018-02-13T18:39:32.407 回答