' ccache的'组态

时间:2014-07-12 14:10:48

标签: ccache

我有一个与ccache配置相关的问题。在我们的开发环境中,我们有数百个使用绝对路径构建对象的make文件。

我想加快这个过程并使用ccache。不幸的是,从不同的位置编译时,我可以看到缓存未命中。以下是一个例子 源文件放在不同目录中的简化情况。如何设置ccache以获得正确的命中率?

我尝试设置CCACHE_BASEDIR变量但没有成功:

developer@crunchbang:~$ pwd
/home/developer
developer@crunchbang:~$ ccache -s
cache directory                     /home/developer/.ccache
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                             0
files in cache                         0
cache size                             0 Kbytes
max cache size                       1.0 Gbytes
developer@crunchbang:~$ ccache g++ -c /home/developer/unique_name1/contest.cpp
developer@crunchbang:~$ ccache g++ -c /home/developer/unique_name2/contest.cpp
developer@crunchbang:~$ ccache -s
cache directory                     /home/developer/.ccache
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                             2
files in cache                         4
cache size                            16 Kbytes
max cache size                       1.0 Gbytes
developer@crunchbang:~$ ccache g++ -c /home/developer/unique_name1/contest.cpp
developer@crunchbang:~$ ccache g++ -c /home/developer/unique_name2/contest.cpp
developer@crunchbang:~$ ccache -s
cache directory                     /home/developer/.ccache
cache hit (direct)                     2
cache hit (preprocessed)               0
cache miss                             2
files in cache                         4
cache size                            16 Kbytes
max cache size                       1.0 Gbytes
developer@crunchbang:~$ ccache --version
ccache version 3.1.7

Copyright (C) 2002-2007 Andrew Tridgell
Copyright (C) 2009-2011 Joel Rosdahl

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.

2 个答案:

答案 0 :(得分:2)

您是否考虑过更改Makefile以使用相对路径?您可以使用提到in this post之类的技术来完成此操作,而无需进行太多更改。

另外注意:CCACHE_BASEDIR生成相对于当前工作目录的路径(可能在联机帮助页中更明确地指定了一些内容)。这意味着您的2个编译命令将导致(使用CCACHE_BASEDIR = / home / developer):

developer@crunchbang:~$ ccache g++ -c unique_name1/contest.cpp
developer@crunchbang:~$ ccache g++ -c unique_name2/contest.cpp

换句话说:它们仍然会有所不同。 只有在unique_name目录中编译时才会解决此问题。 例如

developer@crunchbang:~$ cd /home/developer/unique_name1 && ccache g++ -c /home/developer/unique_name1/contest.cpp
developer@crunchbang:~$ cd /home/developer/unique_name2 && ccache g++ -c /home/developer/unique_name2/contest.cpp

将导致:

developer@crunchbang:~$ ccache g++ -c contest.cpp
developer@crunchbang:~$ ccache g++ -c contest.cpp

答案 1 :(得分:0)

第二次编译后,ccache misses(2)是上次运行的旧统计信息。 您可以运行“ ccache -z”来清除最后的ccache统计信息,然后再重新编译。