0

我正在尝试使 ccache 使用从不同同级目录构建的相同源代码。我已成功设置CCACHE_BASEDIR为这两个兄弟姐妹的父目录。如果我进行构建bld1然后切换到bld2并构建该副本(同样,这些是相同的来源),我不会得到缓存命中。

我现在正在查看来自 setting 的日志输出CCACHE_LOGFILE。不幸的是,日志并没有告诉我计算它查找的哈希值是什么因素/数据,我只看到很多“没有这样的清单文件”消息(似乎是直接查找)。

是否有任何其他选项可以用来调试 ccache 的问题,以找出为什么它不能将这两个源树识别为相同的?

为了清楚起见,如果我在给定目录中重复构建,我确实会在缓存中获得很多命中 - 很明显 ccache 正在使用不变的构建路径,它似乎无法跨目录正常工作。

4

1 回答 1

0

该解决方案最有可能设置hash_dir = falseCCACHE_NOHASHDIR=1如果使用环境变量)或设置-fdebug-prefix-map=old=new将调试信息重新定位到公共前缀(例如-fdebug-prefix-map=$PWD=.)。更多详细信息可以在 ccache 手册中的“在不同目录中编译”部分找到。

于 2018-02-13T20:06:59.037 回答