是否有一个GCC选项用于打印源文件直接包含的标题?

时间:2016-01-17 00:28:42

标签: c++ gcc header-files

我想要一个命令来打印源文件直接包含的标题。我希望它能够打印出它们的完整路径,因此仅仅扫描源文本中的include指令并打印它们是不够的。 GCC有-H选项可以做这样的事情;但是打印间接也包括标题。我不希望将其消化为我想要的信息,因为运行-H分析会花费额外的时间,我不想花费,因为可能会有多个文件名出现在-H输出中的不同目录,这对我来说自动处理起来很尴尬。

是否有命令,使用GCC或GCC常用的某些程序,给出

#include "stuff.h"
#include <memory>
/* a lot more code, but no more include directives */

在.cpp文件中,并且还提供了我正常的-I选项集,将生成

/opt/stufflib/include/stuff.h
/usr/include/c++/5.2.1/memory

之类的 - 为每个include指令提供了一个文件路径?

如果没有,那么我想我只需要用我自己的一些代码复制GCC的头文件搜索逻辑......

1 个答案:

答案 0 :(得分:2)

由于-H gcc预处理程序标志将显示包含缩进的包含文件以表示#include堆栈的深度,因此可以通过以下方式过滤输出:

g++ -H --std=c++11 test.cpp 2>&1 | grep "^\.[^\.]"