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 № 1Ponieważ 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 "^.[^.]"