我正试图让ccache使用从不同同级目录构建的相同源代码。我已经成功地将CCACHE_BASEDIR
设置为这两个兄弟姐妹的父目录。如果我在bld1
中进行构建,然后切换到bld2
并构建该副本(同样,这些都是相同的源(,我不会得到缓存命中。
我现在查看设置CCACHE_LOGFILE
的日志输出。不幸的是,日志并没有告诉我计算它所查找的哈希时使用了哪些因素/数据,我只看到了很多"没有这样的清单文件"的消息(似乎是为了直接查找(。
有没有其他选项可以用来调试ccache的问题,以找出为什么它不能识别这两个源树是相同的?
需要明确的是,如果我在给定的目录中重复构建,我确实会在缓存中得到很多点击——很明显,ccache使用的是不变的构建路径,它似乎无法在目录之间正常工作。
解决方案最有可能设置hash_dir = false
(如果使用环境变量,则为CCACHE_NOHASHDIR=1
(或设置-fdebug-prefix-map=old=new
,以便将调试信息重新定位到公共前缀(例如-fdebug-prefix-map=$PWD=.
(。更多详细信息可以在ccache手册的"在不同目录中编译"部分找到。