对不同目录中的同一文件有ccache链接

问题描述:

我正在使用ccachegit-worktree。许多相同的文件在多个目录*享。问题是ccache不检查文件是否相同,并且再次编译。是否有一个ccache选项可以让它检查跨多个源目录的缓存?对不同目录中的同一文件有ccache链接

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

"Compiling in different directories" section in the ccache manual更多细节:

  • 如果用-g(或类似)建立调试信息添加到目标文件,你必须:

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