LINUX.ORG.RU
Ответ на: комментарий от fernandos

А разве то, что делает ccache, системы сборки C/C++ не делают из коробки

Нет, у них другие задачи

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

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Нет те же

Давайте возьмём самую популярную систему сборки — мэйк. У неё задача сильно так отличает от ccache.

ccache нужен для ускорения билдов с нуля

Нет, повторных сборок.

fernandos ★★★
()
Ответ на: комментарий от byko3y

ccache нужен для ускорения билдов с нуля

У меня билд с нуля ccache замедляет. Выше уже сказали, что он для ускорения пересборки.

А если сборка не чистая, то уже скомпилированные и не измененные файлы не будут перекомпилироваться.

К сожалению, классические системы сборки полагаются на временные отпечатки файлов зависимостей, чтобы определить изменились ли они или нет, и, соответственно, нужно ли перекомпилировать. Например, git наносит тут удар: у него файлы не обладают таймстемпами (можно обойти с помощью git-restore-mtime). ccache хитрее. Но вот как минимум из-за создания контрольных сумм билд с нуля и замедляется.

Жаль, что zapcc, пропатченный clang для умной пересборки перешаблоненных плюсовых проектов, загнулся.

gag ★★★★★
()
Ответ на: комментарий от gag

git наносит тут удар: у него файлы не обладают таймстемпами (можно обойти с помощью git-restore-mtime). ccache хитрее. Но вот как минимум из-за создания контрольных сумм билд с нуля и замедляется

Кривые общепринятые методы садомазохизма с гитом не являются каким-то преимуществом git — в гитосраче мне подсказали. что с git можно спокойно работать с минимальным обменом с сервером, выкладывая и забирая только готовые фичи. Но индусы продолжают тянуть старый алгоритм работы с репой «ввел букву — закоммитился — запушил».

И что ж тогда получается? Если отметка времени изменения у файла соответствует измененности его содержимого — тогда Makefile может делать почти то же, что и ccache? Естественно, за исключением добавления/удаления пробелов и переводов строк в файлах — но это пофигу вообще, обычно в разработке роль такого перфекционизма незаметна.

byko3y ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.