如何检查预编译头是否真的被使用了?

问题描述 投票:0回答:1

gcc 文档中说明了这种可能性https://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html我有包含预编译标头的文件夹,将其全部命名为.h.gch。它包含几个预编译标头,例如 all1.h.gch、all2.h.gch 等,每个标头针对不同的定义集进行编译。我用单独的 makefile 构建它们。

之后,我构建我的项目,将其命名为 test,并使用自己的 makefile。我使用

-I
选项指定 pch 文件夹:
-I/path/to/all.h.gch

根据上面的链接,编译器应该自动从

all.h.gch
文件夹中选择合适的头文件。

如何检查它是否真的使用预编译头而不是每次重新编译 all.h ?使用“时间”实用程序测量编译时间不是一个选项,因为编译时间太短而无法注意到差异。

c++ makefile precompiled-headers pch
1个回答
0
投票

首先,不要依赖

#include
获取 PCH,因为 Clang 不会这样做(最好有一个与 GCC 和 Clang 兼容的构建过程)。

相反,使用命令行标志包含 PCH 标头

-include path/to/header.h

为了确保 PCH 实际被使用,您可以将

header.h.gch
放入不同的目录(远离原始
header.h
),然后将
.gch
的路径传递给
-include
(但不带
.gch
扩展名) ).

© www.soinside.com 2019 - 2024. All rights reserved.