2010-05-28 112 views
0

我正在尝试在CMake中使用ccache。我已经在/usr/local/bin中放置了名称为gccg++c++的符号链接。如果我运行make,添加一些不影响编译文件的CMakeLists.txt(添加未使用的库只是为了强制编译所有目标)并重新运行make,所有内容都会重新编译,就好像没有ccache一样。但是,如果我删除所有CMake生成的文件,然后调用cmake; make,一切正常,并且从缓存中检索目标文件,即使我更改CMakeLists.txt。ccache没有删除CMake文件而没有命中缓存

看起来像CMake生成的东西可以防止击中缓存。我尝试搜索makecmake的详细输出,但找不到可能导致此行为的任何依赖关系。

回答

0

我建议你安装ccache 3.0(几天前发布)并将CCACHE_LOGFILE设置为一个文件。然后,ccache将打印出该文件正在执行的内容,您可能会得到有关该问题的线索。

0

当cmake运行时,它将二进制文件的完整路径放入CMakeCache.txt中。这是一个速度优化,以便将来的配置速度很快(autoconf需要这么长时间的原因之一在于它通过&再次查找太多东西)。如果要强制cmake进行重新扫描,请删除CMakeCache.txt文件或从该文件中滤除包含要刷新工具路径的变量。