4

我现在正在重新组织我的项目,最近一个简单的应用程序现在变成了一对 C++ 项目——静态库真正的应用程序

我想在两个项目之间共享一个预编译头文件,但在设置.pdb文件路径时遇到了一些麻烦。

假设我的第一个项目被调用并使用相应的文件Library构建它的文件。现在,调用第二个项目并将所有内容构建到同一个文件夹(和另一个文件)中。.libLibrary.pdbApplication.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".

那么,有没有人知道一些技巧或方法可以在两个项目之间共享一个预编译的头文件以保留正确的调试信息?

4

2 回答 2

2

问题是,为什么要共享预编译头 (PCH) 文件。一般来说,我会说,这没有意义。PCH 用于加速编译,不在不同项目之间共享任何信息。

由于您还编写了 PDB 文件,因此您可能希望使用您的应用程序调试库代码。这可以通过在编译库时设置 /Fd 参数来实现。当您在应用程序中链接库并且链接器找到相应的 PDB 文件时,您将获得完整的调试支持。

于 2010-06-15T14:11:25.617 回答
1

这听起来很复杂,设置起来很麻烦。不仅如此,这可能根本不可能。

相反,您可以将一个应用程序的预编译标头包含到第二个应用程序中。它仍然会为第二个项目编译一次,但维护变得容易,您不必重新定义第二个项目中的依赖项(只需包含它们)。

于 2010-06-15T13:59:25.783 回答