将ccache链接到不同目录中的同一文件

时间:2017-04-11 22:07:03

标签: ccache

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

1 个答案:

答案 0 :(得分:3)

ccache(默认情况下自版本3.3)在使用-g时将当前工作目录添加到哈希,这样只能在同一源目录中获取缓存命中。另一个类似的问题是如果在编译器参数中使用绝对路径,则需要使用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),则必须设置{{1到“基目录”的绝对路径。然后,ccache将在计算哈希值之前将该目录下的绝对路径重写为relative。