/ / Czy istnieje opcja GCC drukowania nagłówków BEZPOŚREDNIO zawarta w pliku źródłowym? - c ++, gcc, pliki nagłówkowe

Czy istnieje opcja GCC dla nagłówków drukowania BEZPOŚREDNIO zawarta w pliku źródłowym? - c ++, gcc, pliki nagłówkowe

Chcę polecenia, które wydrukuje nagłówkibezpośrednio zawarte w pliku źródłowym. Chcę, aby wypisał ich pełne ścieżki, więc nie wystarczy mi po prostu zeskanować tekst źródłowy w poszukiwaniu dyrektyw dołączania i wydrukować je. GCC ma -H opcja, która robi coś takiego; ale te odbitki pośrednio zawierały również nagłówki. Nie chcę tego streszczać do potrzebnych informacji, ponieważ uruchamiam -H analiza zajmuje więcej czasu, którego nie chcę spędzać, a ponieważ może występować wiele wystąpień jednej nazwy pliku w różnych katalogach w -H wyjście, które byłoby dla mnie niewygodne do automatycznej obsługi.

Czy istnieje polecenie korzystające z GCC lub jakiegoś programu, który jest powszechnie dostępny obok GCC, które zostało podane?

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

w pliku .cpp, a także mój normalny zestaw -I opcje, będą produkować

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

lub podobnie - zapewniając mi dokładnie jedną ścieżkę pliku na dyrektywę dołączania?

Jeśli nie, to chyba będę musiał zduplikować logikę wyszukiwania pliku nagłówka GCC za pomocą własnego kodu ...

Odpowiedzi:

2 dla odpowiedzi № 1

Ponieważ flaga preprocesora -H gcc pokaże dołączone pliki z wcięciem, aby wskazać, jak głęboki jest stos #include, możesz filtrować dane wyjściowe według czegoś takiego:

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