Narzędzie do śledzenia # include dependencies [zamknięte]

zamknięte. to pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the pytanie więc to on-topic {[3] } dla przepełnienia stosu.

Zamknięte 7 lat temu .

Popraw to pytanie Jakieś dobre sugestie? Wejście będzie nazwą pliku nagłówkowego, A wyjście powinno być listą (najlepiej drzewem) wszystkich plików zawierających go bezpośrednio lub pośrednio.
 180
Author: Kara, 2008-09-03

10 answers

Jeśli masz dostęp do GCC / g++, to -M Opcja wyświetli listę zależności. Nie robi żadnej z dodatkowych rzeczy, które robią inne narzędzia, ale ponieważ pochodzi z kompilatora, nie ma szans, że odbierze pliki z "niewłaściwego" miejsca.

 151
Author: KeithB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-10 22:02:38

Dzięki KeithB. Sprawdziłem dokumenty dla cl.exe (VS2008) i znalazł flagę / showIncludes. W IDE można to ustawić na stronie właściwości dowolnego pliku CPP.

Screen shot

 92
Author: Agnel Kurian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-02 08:37:33

Aby uzyskać roztwór o dużej wadze, należy sprawdzić doxygen . Skanuje twoją bazę kodu i tworzy stronę internetową, która skutecznie dokumentuje Twój kod. Jedną z wielu rzeczy, które pokazuje, są drzewa.

Jeśli szukasz możliwości podłączenia wyjścia tego narzędzia do innego procesu, to może to nie działać dla ciebie (chociaż doxygen robi wyjście do innych formatów, Nie jestem naprawdę zaznajomiony z tą funkcją). Jeśli po prostu chcesz obserwować zależności, ale powinno działać świetnie.

 29
Author: Matt Dillard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-12 12:22:35

Bawiłem się narzędziem o nazwie cinclude2dot . To było bardzo przydatne w uzyskaniu uchwyt na dość dużą bazę kodową, kiedy przyszedłem do pracy tutaj. Właściwie myślałem o zintegrowaniu go z naszym codziennym budowaniem w końcu.

 20
Author: Brian Stewart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-25 14:06:38

Pierwszy, cinclude2dot.pl jest skryptem Perla, który analizuje kod C / C++ i tworzy wykres zależności # include jako plik kropki do wprowadzania do graphviz.

Http://www.flourish.org/cinclude2dot/

Jeśli nie chcesz iść drogą tego rodzaju narzędzia ręcznego, to zdecydowanie zwycięzcą jest moim zdaniem narzędzie znane jako "IncludeManager" od ProFactor.

Http://www.profactor.co.uk/includemanager.php

Jest darmowa wersja próbna i jest Super. Jest to wtyczka do Visual Studio, która jest całkowicie zintegrowana, więc podwójne kliknięcie na coś tutaj przeniesie cię do miejsca, w którym jest to zawarte tam.

Tooltip mouseovers daje Ci wszystkie informacje, które chcesz, i pozwala Ci drążyć w dół / w górę, usuwać całe podtypy, które cię nie interesują, przeglądać reprezentacje inne niż wykresy, przeglądać listę dopasowań dla tego i tamtego, to wspaniałe.

Jeśli jesteś szybki, możesz refaktorować strukturę # include duży projekt przed upływem okresu próbnego. Mimo to nie kosztuje wiele, około 35 dolarów za licencję.

To, co robi, jest po prostu idealne. Nie tylko # zawierają wykresy, ale także zależności między projektami udostępnianych plików, wpływ na czas kompilacji, szczegółowe właściwości w siatkach, doskonałe.

 12
Author: Allbite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-19 04:25:24

Dobra wiadomość: RedHat Source-Navigator (działa również na Windows). Oczywiście przełączniki kompilatora (wspomniane wcześniej) mają lepsze parsowanie i nie jestem pewien, jak to obsłuży MFC, Qt i ich magiczne słowa kluczowe.

RedHat Source-Navigator

 12
Author: Agnel Kurian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-02 08:37:41

Bazując na odpowiedzi Keithba , Oto składnia GNUmake, która automatycznie 1) generuje pliki zależności, 2) aktualizuje je i 3) używa ich w pliku makefile:

.dep:
    mkdir $@
.dep/%.dep: %.c .dep
    (echo $@ \\; $(CC) $(IFLAGS) -MM $<) > $@ || (rm $@; false)
.dep/%.dep: %.cpp .dep
    (echo $@ \\; $(CXX) $(IFLAGS) -MM $<) > $@ || (rm $@; false)
DEPEND := $(patsubst %.dep,.dep/%.dep,$(OBJ:.o=.dep))
-include $(DEPEND)

(Upewnij się, że zmienisz te wcięcia na hardtabs.)

 5
Author: cxw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-15 15:08:20
 4
Author: dwj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-03 21:45:51

Understand for C++ powinien ci pomóc: buduje bazę danych, do której możesz uzyskać dostęp z Perla.

 3
Author: Xavier Nodet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-03 19:46:43

Cscope ( http://cscope.sourceforge.net / ) robi to w samodzielnym xterm, a także może być używany wewnątrz ulubionego edytora-ma świetną obsługę Emacsa i VI / vim.

 1
Author: svec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-06 03:45:54