У меня есть решение со многими проектами Visual C ++, все из которых используют PCH, но в некоторых из них включены определенные переключатели компилятора для конкретных нужд проекта.
Большинство этих проектов используют один и тот же набор заголовков в соответствующем файле stdafx.h (STL, boost и т. Д.). Мне интересно, можно ли разделить PCH между проектами, чтобы вместо компиляции каждого PCH для каждого проекта я мог бы иметь один общий PCH, который могли бы просто использовать большинство проектов в решении.
Кажется возможным указать расположение PCH в качестве общего в настройках проекта, поэтому я подозреваю, что это может сработать. Я также предполагаю, что все исходные файлы во всех проектах, использующих общий PCH, должны иметь одинаковые настройки компилятора, иначе компилятор будет жаловаться на несоответствие между PCH и компилируемым исходным файлом.
Кто-нибудь пробовал это? Это работает?
Связанный с этим вопрос: должен ли такой сегментный PCH быть чрезмерно инклюзивным, или это повлияет на общее время сборки? Например, общий PCH может включать в себя множество широко используемых заголовков STL, но для некоторых проектов могут потребоваться только <string>
и <vector>
. Будет ли время, сэкономленное за счет использования общего PCH, окупаться на более позднем этапе процесса сборки, когда оптимизатору придется отбросить все неиспользуемые материалы, перетаскиваемые в проект PCH?