我正在尝试使用从不同兄弟目录构建的相同源代码来使用ccache。我已成功将CCACHE_BASEDIR
设置为这两个兄弟姐妹的父目录。如果我在bld1
中进行构建,然后切换到bld2
并构建该副本(再次,这些是相同的源),我没有得到缓存命中。
我现在正在查看设置CCACHE_LOGFILE
的日志输出。不幸的是,日志并没有告诉我什么因素/数据计算它查找的哈希值,我只看到很多“没有这样的清单文件”消息(直接查找,似乎)。
我可以使用其他任何方法调试ccache的问题,找出为什么它不能识别这两个源树是否相同?
为了清楚起见,如果我在给定目录中重复构建,我确实在缓存中获得了很多命中 - 很明显ccache正在使用不变的构建路径,它似乎似乎没有正常工作跨目录。
答案 0 :(得分:0)
如果使用环境变量,解决方案最有可能设置hash_dir = false
(CCACHE_NOHASHDIR=1
)或将-fdebug-prefix-map=old=new
设置为将调试信息重定位到公共前缀(例如-fdebug-prefix-map=$PWD=.
)。有关详情,请参阅"Compiling in different directories" section in the ccache manual。