qmake:使用预编译头(实用)

预编译头 (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

为避免此类潜在冲突,请为要预编译的头文件指定不同的名称。

示例

qmake:使用预编译头(实用)_第1张图片

qmake:使用预编译头(实用)_第2张图片

然后在工程的其他位置就不必再包含include 了,也不必包含stable.h文件。

qmake:使用预编译头(实用)_第3张图片

下面的红色警报并不影响程序运行。

你可能感兴趣的:(qmake,qt,qmake)