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