Эти решения применимы как к отладке, так и к выпуску, и ориентированы на кодовую базу, которая уже большая и громоздкая.
Форвардные декларации являются распространенным решением.
Распределенное здание, например, Incredibuild, является победой.
Выдвижение кода из заголовков в исходные файлы может работать. Небольшие классы, константы, перечисления и т. Д. Могут начинаться в заголовочном файле просто потому, что его можно было бы использовать в нескольких блоках компиляции, но в действительности они используются только в одном и могут быть перемещены в файл cpp.
Решение, о котором я не читал, но которое использовал, заключается в разделении больших заголовков. Если у вас есть несколько очень больших заголовков, взгляните на них. Они могут содержать связанную информацию, а также могут зависеть от множества других заголовков. Возьмите элементы, которые не зависят от других файлов ... простые структуры, константы, перечисления и предварительные объявления и переместите их с the_world.h
на the_world_defs.h
. Теперь вы можете обнаружить, что многие из ваших исходных файлов теперь могут включать только the_world_defs.h
и избегать включения всех этих накладных расходов.
Visual Studio также имеет параметр «Показать включения», который позволяет определить, какие исходные файлы содержат много заголовков, а какие файлы заголовков включены чаще всего.
Для очень распространенных включений рассмотрите возможность помещения их в предварительно скомпилированный заголовок.