预编译头文件是一种机制,通过创建一些头文件的预处理版本来加速编译,并在编译过程中使用该版本,而不是重复解析原始头文件。Boost.Build 支持使用 gcc 和 msvc 工具集进行预编译头文件。
要使用预编译头文件,请执行以下步骤
创建一个头文件,其中包含您要预编译的项目使用的头文件。最好只包含足够稳定的头文件,例如来自编译器和外部库的头文件。请将头文件包装在 #ifdef BOOST_BUILD_PCH_ENABLED
中,以便在未启用 PCH 时不进行可能昂贵的头文件包含。将新头文件包含在源文件的开头。
为预编译头文件声明一个新的 Boost.Build 目标,并将该预编译头文件添加到要加速编译的目标的源代码中。
cpp-pch pch : pch.hpp ; exe main : main.cpp pch ;
如果要在 C 程序中使用预编译头文件,可以使用 c-pch
规则。
Boost.Build 分发版中的 pch
示例可以用作参考。
请注意以下几点
预编译头文件的包含必须是源文件中的第一件事,在任何代码或预处理指令之前。
用于编译源文件和预编译头文件的构建属性必须相同。请考虑使用项目需求来确保这一点。
预编译头文件纯粹用作提高编译时间的一种方式,而不是为了减少 #include
语句的数量。如果源文件需要包含某个头文件,请在源文件中明确包含它,即使预编译头文件中也包含了相同的头文件。这确保了即使不支持预编译头文件,您的项目也能正常构建。
在 gcc 编译器上,预编译头文件的名称必须与 cpp-pch
目标的名称相同。这是 gcc 的要求。
在 4.2 版本之前,gcc 编译器不允许在预编译头文件中使用匿名命名空间,这限制了它们的效用。有关详细信息,请参阅 错误报告。