我现在正在重新组织我的项目,最近一个简单的应用程序现在变成了一对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".
那么,有没有人知道在两个项目之间共享一个预编译头的技巧或方法,保留适当的调试信息?
答案 0 :(得分:2)
问题是,为什么要共享预编译头(PCH)文件。一般来说,我会说,这没有意义。 PCH用于加速编译,以便在不同项目之间共享任何信息。
由于您还要编写有关PDB文件的内容,因此您可能希望使用应用程序调试库代码。这可以通过在编译库时设置/ Fd参数来实现。在应用程序中链接库并且链接器找到相应的PDB文件时,您将获得完整的调试支持。
答案 1 :(得分:1)
这听起来既复杂又麻烦。不仅如此,它可能根本不可能。
相反,您可以将预编译的头文件从一个应用程序包含到第二个应用程序中。它仍将为第二个项目编译一次,但维护变得简单,您不必重新定义第二个项目中的依赖项(只包括它们)。