Сокращение времени компиляции - красная сельдь и форма преждевременной оптимизации. Реорганизация вашего кода для сокращения времени компиляции (когда это имеет значение) можно сделать , но с некоторыми большими затратами.
Что касается Gnome, у Gnome есть «закрытый указатель» в каждом GObject. Это реализует идиому pimpl. Это уменьшает зависимости между исходными файлами и допускает некоторую форму инкапсуляции. Для проектов на Си меньше проблем с компиляцией.
В современных проектах C ++ интенсивно используются шаблоны, что неизбежно ускоряет время компиляции. Использование идиомы pimpl и классов объявления вперед (вместо включения заголовка, где это возможно) уменьшает логические зависимости между единицами перевода (это хорошо), но во многих ситуациях не очень помогает со временем компиляции.
Использование boost
значительно увеличивает время компиляции (будьте осторожны, если вы косвенно включаете заголовки boost во многие исходные файлы), и многие проекты на C ++ используют его.
Я должен также упомянуть, что тонкий шаблон часто используется для уменьшения раздувания кода с помощью шаблонов.