我有一个包含许多 Visual C++ 项目的解决方案,所有项目都使用 PCH,但有些项目针对特定项目的需要打开了特定的编译器开关。
这些项目中的大多数在各自的 stdafx.h(STL、boost 等)中共享相同的标题集。我想知道是否可以在项目之间共享 PCH,这样我就可以拥有一个解决方案中的大多数项目都可以使用的通用 PCH,而不是为每个项目编译每个 PCH。
似乎可以在项目设置中将 PCH 的位置指定为共享位置,所以我有预感这可以工作。我还假设使用共享 PCH 的所有项目中的所有源文件都必须具有相同的编译器设置,否则编译器会抱怨 PCH 和正在编译的源文件之间的不一致。
有没有人试过这个?它有效吗?
一个相关的问题:这样的分片 PCH 是否应该过度包容,还是会影响整体构建时间?例如,共享 PCH 可能包含许多广泛使用的 STL 标头,但某些项目可能只需要<string>
和<vector>
. 当优化器不得不丢弃所有由 PCH 拖入项目的未使用的东西时,使用共享 PCH 节省的时间是否必须在构建过程的稍后阶段归还?