我有一个被多个项目使用的框架(其中包括几个示例来展示框架是如何工作的)。该框架具有核心、图形、物理、gui 等组件。每个组件都是一个单独的库。也有几种配置。
主解决方案文件使用所有可能的配置编译整个项目,以便项目可以使用库。由于该框架很少被重新编译,尤其是有人(包括我)在使用该框架的项目上工作,因此预编译许多头文件是有意义的。
最初,我让每个项目/样本都有自己的用于整个项目的预编译头文件。每次我都必须重建相同的 pch(例如,Debug),所以我决定共享 PCH 将减少冗余 PCH 编译。到现在为止还挺好。我有一个将 PCH 与库一起编译的项目。所有后续项目/示例现在都使用相同的 PCH。这非常有效。
唯一的问题是我看到文件大小增加了。这不是障碍,就像使用该框架的项目打算发布一样,它可以将自己从共享 PCH 中分离出来并自己制作。我这样做是为了快速开发(我实际上创建了一个工具,它为准备构建的新项目/示例创建 VS 项目文件和源文件,并促进升级使用旧项目的先前项目框架的版本)。
无论如何,(我假设)文件大小的增加是因为创建共享 PCH 的独立 VS 项目文件包含来自所有库的所有头文件。我的问题是我是否可以使用条件编译(#ifndef)来减小最终可执行文件的大小?或者可能以某种方式共享多个 PCH 文件(据我所知,这是不可能的,但我可能错了)如果我没有意义,请说出来(用客气的话 :))因为我对 PCH 文件的了解非常有限.
谢谢!
注意:为了重新迭代并说明清楚,到目前为止,我有一个解决方案文件正在编译包括共享 PCH 在内的所有库。现在,如果我重新编译所有示例和项目,它们最多可以在几秒钟或更长时间内编译。以前,每个项目都会重新创建一个 PCH 文件。另外,最初我希望每个库都有一个 PCH,但后来我发现一个源文件不能使用多个 PCH 文件,所以这个选项不可行。另一种选择是编译所有可能的 PCH 文件组合,但这太耗时、繁琐且容易出错。