预编译头 (PCH) 是一些编译器(注意并非所有编译器都支持此特性)支持的一种性能特性,用于编译稳定的代码体,并将代码的编译状态存储在二进制文件中。在后续的编译过程中,编译器会加载存储的状态,并继续编译指定的文件。每次后续编译都更快,因为不需要重新编译稳定的代码。
预编译头文件需要将 C 包含与 C++ 包含分开,因为 C 文件的预编译头文件可能不包含 C++ 代码。
要使项目使用预编译头文件,只需在项目文件中定义 PRECOMPILED_HEADER 变量:
PRECOMPILED_HEADER = stable.h
qmake 将处理剩下的工作,以确保预编译头文件的创建和使用。您不需要在 HEADERS 中包含预编译头文件,因为如果配置支持预编译头,qmake 会这样做。
面向 Windows 的 MSVC 和 g++ 规范默认启用 precompile_header。
使用此选项,可以在项目文件中触发条件块以在使用预编译头时添加设置:
precompile_header:!isEmpty(PRECOMPILED_HEADER) {
DEFINES += USING_PCH
}
要将预编译头也用于 MSVC nmake 目标上的 C 文件,请将 precompile_header_c 添加到 CONFIG 变量。 如果头文件也用于 C++ 并且它包含 C++ 关键字/includes,请将它们用 #ifdef __cplusplus 括起来)。
在某些平台上,预编译头文件的文件名后缀与其他目标文件的文件名后缀相同。例如以下声明可能会导致生成两个具有相同名称的不同目标文件:
PRECOMPILED_HEADER = window.h
SOURCES = window.cpp
为避免此类潜在冲突,请为要预编译的头文件指定不同的名称。
然后在工程的其他位置就不必再包含include
下面的红色警报并不影响程序运行。