我想要一个命令来打印源文件直接包含的标题。我希望它能够打印出它们的完整路径,因此仅仅扫描源文本中的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的头文件搜索逻辑......
答案 0 :(得分:2)
由于-H gcc预处理程序标志将显示包含缩进的包含文件以表示#include堆栈的深度,因此可以通过以下方式过滤输出:
g++ -H --std=c++11 test.cpp 2>&1 | grep "^\.[^\.]"