У меня есть огромный проект, около 150 000 LOC кода С++. Время сборки составляет около 15 минут. Этот проект состоит из множества подпроектов разных размеров.
Я построил отдельные предварительно скомпилированные заголовки для каждого подпроекта, но когда я использую их, время сборки остается примерно одинаковым. Казалось, что время сборки на 5-10% меньше, а не больше.
Предварительно скомпилированные заголовки определенно используются, я использую параметр -Winvalid-pch
, и я попытался скомпилировать с опцией -H
компилятор, мои прекомпилированные заголовки появляются на выходе с символом "bang", это означает, что компилятор может использовать предварительно скомпилированный заголовок.
Все мои предварительно скомпилированные заголовки не очень большие, каждый файл имеет около 50 Мб. Я использую python script, нашел здесь, чтобы сгенерировать список наиболее часто используемых предварительно скомпилированных заголовков, поэтому мой список кандидатов предварительной компиляции довольно хорош.
Есть ли свободные/открытые исходные инструменты для оптимизации сборки? Казалось, что стандартная утилита make
не имеет возможности измерять времена сборки разных целей. Я не могу найти способ получить статистику для разных целей с помощью make
. Я не говорю об анализе зависимостей или о чем-то продвинутом. Я просто хочу знать, какие цели большую часть времени были потрачены впустую.
Кроме того, казалось, что GCC довольно неэффективен в работе с прекомпилированными заголовками. Мне не удалось получить какую-либо сборку подпроекта заметно быстрее, максимальное ускорение, которое я получаю, составляет 20% от проекта, который получает три минуты на сборку. Казалось, проще и дешевле купить более быструю машину с твердотельным диском, чем оптимизировать время сборки на Linux с помощью GCC.