Да, это возможно, и я могу заверить вас, экономия времени значительна. Когда вы компилируете свой PCH, вы должны скопировать файлы .pdb
и .idb
из проекта, который создает файл PCH. В моем случае у меня есть простой двухфайловый проект, который создает файл PCH. Заголовок будет вашим заголовком PCH, а источнику будет предложено создать PCH в настройках проекта - это похоже на то, что вы обычно делаете в любом проекте. Как вы упомянули, вы должны иметь одинаковые параметры компиляции для каждой конфигурации, в противном случае возникнет несоответствие, и компилятор будет жаловаться.
Копирование вышеупомянутых файлов каждый раз, когда происходит перестроение или каждый раз, когда перекомпилируется PCH, будет проблемой, поэтому мы автоматизируем это. Чтобы автоматизировать копирование, выполните событие перед сборкой, в котором вышеупомянутые файлы будут скопированы в соответствующий каталог. Например, если вы компилируете сборки Debug
и Release
своего PCH, скопируйте файлы из Debug
вашего проекта PCH в Debug
вашего зависимого проекта. Таким образом, команда копирования будет выглядеть так
copy PchPath \ Debug * .pdb Debug \ / -Y
Обратите внимание на /-Y
в конце. После первой сборки каждая последующая сборка постепенно компилируется, поэтому при повторной замене файлов Visual Studio будет жаловаться на поврежденные символы. Если они повреждены, вы всегда можете выполнить перестроение, при котором файлы будут скопированы снова (на этот раз они не будут пропущены, так как они больше не существуют - программа очистки удалит файлы).
Надеюсь, это поможет. Это заняло у меня довольно много времени, но оно того стоило. У меня есть несколько проектов, которые зависят от одной большой структуры, и PCH должен быть скомпилирован только один раз. Все зависимые проекты теперь компилируются очень быстро.
РЕДАКТИРОВАТЬ: Вместе с несколькими другими людьми, я проверил это под VS2010
и VS2012, и, похоже, он работает правильно.