Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果不删除CMake文件,ccache不会命中缓存_Cmake_Ccache - Fatal编程技术网

如果不删除CMake文件,ccache不会命中缓存

如果不删除CMake文件,ccache不会命中缓存,cmake,ccache,Cmake,Ccache,我正在尝试将ccache与CMake一起使用。我在/usr/local/bin中放置了名为gcc、g++和c++的符号链接。如果我运行make,对CMakeLists.txt添加一些不影响编译文件的更改(添加未使用的库以强制生成所有目标),然后重新运行make,所有内容都会重新编译,就好像没有ccache一样。但是,如果我删除所有CMake生成的文件,然后调用CMake;使,一切正常,即使我更改了CMakeLists.txt,也会从缓存中检索对象文件 看起来是CMake生成的阻止命中缓存的内容。

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


看起来是CMake生成的阻止命中缓存的内容。我尝试搜索
make
cmake
的详细输出,但找不到任何可能导致此行为的依赖项。

我建议您安装ccache 3.0(几天前发布)并将
ccache\u日志文件设置为文件。然后,ccache将打印它对该文件所做的操作,您可能会得到有关该问题的线索。

当cmake运行时,它会将二进制文件的完整路径放入CMAKECHACHE.txt。这是一个速度优化,使未来的配置速度更快(autoconf花费如此长时间的部分原因是它一遍又一遍地寻找很多东西)。如果要强制cmake重新扫描,请删除CMakeCache.txt文件或从该文件中筛选出包含要刷新的工具路径的变量