对不同目录中的同一文件有ccache链接
问题描述:
我正在使用ccache
和git-worktree
。许多相同的文件在多个目录*享。问题是ccache
不检查文件是否相同,并且再次编译。是否有一个ccache
选项可以让它检查跨多个源目录的缓存?对不同目录中的同一文件有ccache链接
答
如果使用-g
,ccache(默认自版本3.3以来)将当前工作目录添加到哈希,这只能使得在同一源目录中获得高速缓存命中成为可能。另一个类似的问题是,如果在编译器参数中使用绝对路径,则需要使用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
选项的参数),则必须设置base_dir
为绝对路径到“基目录”。然后,ccache将在计算散列之前将该目录下的绝对路径重写为相对路径。