GCC и предварительно скомпилированные заголовки

После прочтенияэта хорошая статья (Уход и подача предварительно скомпилированных заголовков), у меня есть некоторые сомнения относительно того, как они могут реально работать в реальной жизни. В частности, как я могу узнать, что мне нужно запустить пересборку предварительно скомпилированного заголовка в следующих сценариях:

Я решил#define что-то в одном из моих файлов .cpp, которое изменяет способ, которым препроцессор интерпретирует некоторые заголовки, которые уже включены в мой предварительно скомпилированный заголовокЯ включаю другой заголовок в один из моих файлов .cpp, который#defines специальная директива препроцессора, которая изменяет способ, которым препроцессор интерпретирует заголовок, уже включенный в предварительно скомпилированный заголовокХуже того, предыдущая проблема может возникать рекурсивно, когда определенные заголовки#include другие заголовки

Если использование предварительно скомпилированных заголовков обеспечивает определенный стиль кодирования, такой как ограничение количества заголовков, включенных в файлы .cpp, до одного и никогда#defineВещи в файл .cpp?

В то время как MicrosoftКомпилятор, вероятно, делает достойную работу с предварительно скомпилированными заголовками (применяя некоторые специфичные для MS voodoo), потому что, насколько я знаю, он обеспечивает/Yc а также/Yu опции, которые должны выполнять всю работу по сантехнике, для GCC кажется, что эта функциональность требует много ручной работы и творчества в Makefile, и я нене может найти шаблон, который должен решить все ловушки использования предварительно скомпилированных заголовков.

Например, если у меня есть проект, который собирает несколько библиотек, чтобы не перестраивать их все после каждого изменения, я должен использовать несколько очень симпатичныхsed трюки в Makefile, чтобы обнаружить, если один из заголовков#includeд текущей библиотекой был изменен (или#includeизмененный заголовок). Я боюсь даже думать о тех сложностях, которые на самом деле подразумевают предварительно собранные заголовки, чтобы скрипт сборки перестраивал их каждый раз, когда это необходимо.

Ответы на вопрос(1)

Ваш ответ на вопрос