我正在ccache
使用git-worktree
。许多相同的文件在多个目录中共享。问题是ccache
不检查文件是否相同,并再次编译。是否有ccache
选项允许它检查多个源目录中的缓存?
答案 0 :(得分:3)
ccache(默认情况下自版本3.3)在使用-g
时将当前工作目录添加到哈希,这样只能在同一源目录中获取缓存命中。另一个类似的问题是如果在编译器参数中使用绝对路径,则需要使用base_dir
配置设置。
"Compiling in different directories" section in the ccache manual的详细信息:
如果使用-g(或类似)构建将调试信息添加到目标文件,则必须:
-fdebug-prefix-map=old=new
选项将调试信息重定位到公共前缀(例如-fdebug-prefix-map=$PWD=.
);或hash_dir = false
。如果在命令行的任何位置使用绝对路径(例如源代码文件路径或编译器选项的参数,如-I
和-MF
),则必须设置{{1到“基目录”的绝对路径。然后,ccache将在计算哈希值之前将该目录下的绝对路径重写为relative。