Чтобы ускорить время компиляции gcc, у нас есть два варианта:
Однако я не знаю, что лучше при каких обстоятельствах.
Я погуглил этот вопрос, и у меня возникло смутное впечатление, что ccache полностью превосходит другие. Это правильно?
Предварительно скомпилированные заголовки и ccache предназначены для совершенно разных вариантов использования. ccache может использоваться вместе с предварительно скомпилированными заголовками, они не являются взаимоисключающими.
ccache кэширует весь данный исходный файл, заголовки и все, кэшируя скомпилированный объектный модуль. Технически, ccache берет весь предварительно обработанный модуль перевода исходного кода, хэширует его и кэширует полученный объектный модуль.
Предварительно скомпилированные заголовки обеспечивают небольшую экономию времени, когда одинаковые заголовочные файлы #include
d неоднократно из разных источников перевода. Но если один и тот же исходный код неоднократно компилируется, прекомпилированные заголовки не помогают (кроме единственного преимущества использования предварительно скомпилированного заголовка). Вот тут-то и появляется ccache, когда ccache спокойно пропускает весь этап компиляции и просто извлекает ранее скомпилированный объектный модуль из кэша.
Таким образом, не имеет смысла сравнивать, какой подход лучше, ccache или предварительно скомпилированные заголовки. Они решают две разные проблемы.
Других решений пока нет …