摆脱预编译的标题

时间:2009-11-14 01:35:51

标签: gcc precompiled-headers

好的,我有适用于Mac和Windows的旧Metrowerks代码,其中之前的开发人员为此代码库构建的每个项目使用预编译的头文件。

从概念上讲,如何摆脱预编译的标题?

你是否把.pch的内容移到core.h并将它包含在你所有的.h文件中?

我想继续使用CMAKE进行构建,虽然有一些方法可以使预编译头工作,但我认为最好删除它们的依赖关系。

有些人可能会说有关编译速度的事情,但我没有参加比赛,我已经拥有快速设备,我对如何摆脱预编译的标题更感兴趣。

2 个答案:

答案 0 :(得分:1)

  

从概念上讲,如何摆脱预编译的标题?

预编译标头是一种优化。从概念上讲,您只需使用常规标题即可删除预编译的标题。

  

你是否把.pch的内容移到core.h并将它包含在你所有的.h文件中?

我知道这样做的程序员。我个人更喜欢知道我正在使用哪些函数以及它们来自哪里,所以我确保每个文件#include编译该文件所需的所有头文件(并且只编译该文件所需的头文件)。然后,这确实需要不断检查是否不再需要标题。

答案 1 :(得分:1)

在那里...在一个C ++项目中,绝对每个翻译单元都包含一个中心标题,而且几乎包含了每个Boost标题。在支持PCH的平台上很好,但是我们正在编译一些不支持PCH的平台,并且他们花了年龄。 (正如你的core.h方法一样。不要这样做,特别是不能使用C ++。)

所以,这里是:

  • grep for the PCH的所有内容,然后扔掉它们(或者,更轻柔地,将它们评论出来)。
  • 对于每个翻译单元,尝试构建,并添加缺失的包含,直到您不再遇到编译器错误。
是的,这是蛮力的方法。不幸的是,我知道没有更好的。