когда стоит использовать ccache?

Насколько я знаю, ccache ускоряет компиляцию, перехватывая предыдущие компиляции и обнаруживая, когда та же самая компиляция выполняется снова. однако makefile делает то же самое. так зачем нам нужен ccache? в каких случаях мы его используем? Спасибо!


person chicklet    schedule 13.04.2012    source источник


Ответы (2)


С http://ccache.samba.org/:

Если вы когда-либо запускали make clean; make, вы, вероятно, можете извлечь выгоду из ccache. Разработчики обычно делают чистую сборку проекта по целому ряду причин, и это выбрасывает всю информацию из ваших предыдущих компиляций. При использовании ccache перекомпиляция выполняется намного быстрее.

Другая причина использования ccache заключается в том, что один и тот же кеш используется для сборок в разных каталогах. Если у вас есть несколько версий или ответвлений программного обеспечения, хранящихся в разных каталогах, многие объектные файлы в каталоге сборки, вероятно, могут быть взяты из кеша, даже если они были скомпилированы для другой версии или ответвления.

Третий сценарий использует ccache для ускорения чистых сборок, выполняемых серверами, или сборочных ферм, которые регулярно проверяют возможность сборки кода.

Вы также можете разделить кеш между пользователями, что может быть очень полезно на общих серверах компиляции.

person Delan Azabani    schedule 13.04.2012
comment
когда мы запускаем make clean, мы хотим очистить весь файл .o и перекомпилировать. Итак, если мы хотим сохранить предыдущие компиляции в кэше, почему бы просто не запускать make clean раньше? - person chicklet; 13.04.2012
comment
Возможно, вы только что изменили свой Makefile. Или вы можете попытаться разделить ошибку без git: если вы распакуете tar-архив более старой версии проекта, make подумает, что двоичные файлы обновлены, потому что они новее, чем исходные файлы, но это было бы неправильно. ! В обеих этих ситуациях требуется make clean. ccache не совершит ту же ошибку, потому что использует хэши вместо меток времени, и очень осторожно вмешивается только в ситуации, когда результат будет идентичным. - person joeytwiddle; 05.08.2014

Помимо сомнительной выгоды от ускорения чистых сборок, необходимой из-за сломанной системы сборки, и простой случайной выгоды от наличия общего кеша, существует законное использование ccache даже для изолированной безупречной системы сборки на основе mtime:

Когда вы прыгаете туда-сюда между ветками (не говоря уже об отдельных каталогах) или перебазируете, так что вы в конечном итоге затрагиваете целую кучу файлов, или, если вам не повезло, центральный заголовок (например, define.h ), которая включена повсюду, ваша безупречная система сборки на основе mtime покорно все перестроит. Если когда-то в прошлом вы создавали в основном одно и то же состояние, ccache ускорит эту перестройку.

person user2394284    schedule 27.07.2017