给定源文件,有没有办法让gcc返回仅直接包含的头文件的列表?

时间:2018-09-13 01:59:04

标签: c++ gcc header include

我尝试过g++ -MM -MG -H -std=c++11 SomeSourceFile.cpp。这里有两个输出,一个来自-MM -MG,另一个来自-H

  • -MM -MG:我得到了所有非系统(用户)包含,但是没有得到包含的层次结构。我只对直接包含感兴趣,但是此选项为我提供了所有包含。
  • -H:我获得include的层次结构信息,但仅获得编译器目录中的内容。我在输出中看不到非系统包含。

是否有一种方法可以从源文件中获取直接的非系统包含项(即使它们尚不存在)?

1 个答案:

答案 0 :(得分:0)

要帮助一些Perl吗?

$ cat tmp.c
#include "a.h"
$ cat a.h
#include "b.h"
$ g++ tmp.c -E | perl -ne 'if (!defined $x) {
>   if (/^# 1 "([^"]+)" 1\b/) {
>      $x = $1;
>      print "$x\n";
>   }
> } else {
>   $x = undef if /^# 1 "$x" 2\b/;
> }'
a.h