конфигурация 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.

person user3801620    schedule 12.07.2014    source источник
comment
Вы проверили командную строку, используемую для вызова g ++ на двух машинах? Если они не совпадают, ccache не кэширует результаты.   -  person Vinícius Gobbo A. de Oliveira    schedule 12.07.2014
comment
Это не тот случай. Как настроить его на одной машине? Например, я установил CCACHE_BASEDIR = / home, и нет никакой разницы.   -  person user3801620    schedule 13.07.2014


Ответы (2)


Думали ли вы об изменении ваших файлов Makefile для использования относительных путей? Вы можете использовать метод, подобный упомянутому в этом сообщении., чтобы сделать это, не внося слишком много изменений.

Дополнительно обратите внимание: 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
person Mathiasdm    schedule 14.08.2014

Отсутствует ccache (2) после второй компиляции - это старая статистика последнего запуска. вы можете запустить "ccache -z", чтобы очистить последнюю статистику ccache перед повторной компиляцией.

person arsfarming    schedule 11.06.2019