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

Сейчас я реорганизую свой проект, и то, что недавно было простым приложением, теперь превратилось в пару проектов C ++ - статическая библиотека и реальное приложение.

Я хотел бы использовать один предварительно скомпилированный заголовок между двумя проектами, но сталкиваюсь с некоторыми проблемами с настройкой .pdb путей к файлам.

Предположим, мой первый проект называется Library и строит его .lib файл с соответствующим Library.pdb файлом. Теперь второй проект называется Application и собирает все в ту же папку (.exe и другой Application.pdb файл).

Сейчас оба моих проекта создают свои собственные предварительно скомпилированные файлы заголовков (Library.pch и Application.pch) на основе одного фактического файла заголовка. Это работает, но я считаю, что это пустая трата времени, и я также думаю, что должен быть способ поделиться одним предварительно скомпилированным заголовком между двумя проектами.

Если в моем проекте Application я попытаюсь установить параметр Use Precompiled Header (/Yu) и установить для него значение Library.pch, это не сработает из-за следующей ошибки:

error C2858: command-line option 'program database name "Application.pdb" inconsistent with precompiled header, which used "Library.pdb".

Итак, знает ли кто-нибудь какой-нибудь трюк или способ совместного использования одного предварительно скомпилированного заголовка между двумя проектами с сохранением правильной отладочной информации?


person M. Williams    schedule 15.06.2010    source источник
comment
Добавьте свой голос: connect.microsoft.com/VisualStudio/feedback/details/98645/   -  person Hans Passant    schedule 15.06.2010
comment
Связано с: stackoverflow .com / questions / 645747 /.   -  person Scott Langham    schedule 23.04.2012


Ответы (2)


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

Поскольку вы также пишете о файле PDB, вы, вероятно, захотите отладить код библиотеки с помощью своих приложений. Этого можно добиться, установив параметр / Fd при компиляции библиотеки. Когда вы связываете библиотеку в своем приложении и компоновщик находит соответствующий файл PDB, вы получаете полную поддержку отладки.

person harper    schedule 15.06.2010

Это звучит сложно и громоздко в настройке. Более того, это может быть вообще невозможно.

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

person utnapistim    schedule 15.06.2010