基于缓存的IR无法按预期工作



我正试图让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手册的"在不同目录中编译"部分找到。

相关内容

  • 没有找到相关文章

最新更新