문제

좋은 제안이 있나요?입력은 헤더 파일의 이름이고 출력은 이를 직접 또는 간접적으로 포함하는 모든 파일의 목록(가급적 트리)이어야 합니다.

도움이 되었습니까?

해결책

GCC/G++에 액세스할 수 있는 경우 -M 옵션 종속성 목록을 출력합니다.다른 도구가 수행하는 추가 작업은 수행하지 않지만 컴파일러에서 제공되므로 "잘못된" 위치에서 파일을 가져올 가능성은 없습니다.

다른 팁

KeithB에게 감사드립니다.cl.exe(VS2008)에 대한 문서를 찾아서 /showIncludes 플래그를 찾았습니다.IDE에서는 모든 CPP 파일의 속성 페이지에서 설정할 수 있습니다.

Screen shot

무거운 솔루션의 경우 다음을 확인해야 합니다. 독산소.이는 코드 베이스를 스캔하고 코드를 효과적으로 문서화하는 웹사이트를 제공합니다.그것이 보여주는 많은 것 중 하나는 나무를 포함한다는 것입니다.

이 도구의 출력을 다른 프로세스에 연결할 수 있는 방법을 찾고 있다면 이것이 작동하지 않을 수 있습니다(doxygen이 다른 형식으로 출력하지만 저는 그 기능에 대해 잘 알지 못합니다).하지만 단순히 종속성을 살펴보고 싶다면 훌륭하게 작동할 것입니다.

나는라는 도구를 가지고 놀았습니다. 포함2점.제가 여기 일하러 왔을 때 꽤 큰 코드베이스를 다루는 데 꽤 유용했습니다.나는 실제로 그것을 우리의 일일 빌드에 통합하는 것에 대해 실제로 생각했습니다.

첫째, cinclude2dot.pl은 C/C++ 코드를 분석하고 graphviz에 입력하기 위한 도트 파일로 #include 종속성 그래프를 생성하는 Perl 스크립트입니다.

http://www.flourish.org/cinclude2dot/

그런 종류의 수동 도구를 사용하고 싶지 않다면 ProFactor의 "IncludeManager"라고 알려진 도구가 단연 승자라고 생각합니다.

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

무료 평가판이 있는데 정말 훌륭합니다.완전히 통합된 Visual Studio용 플러그인이므로 여기 있는 항목을 두 번 클릭하면 해당 항목이 포함된 곳으로 이동합니다.

도구 설명에 마우스를 올리면 원하는 모든 정보가 제공되며 드릴다운/업, 관심 없는 전체 하위 트리 제거, 그래프 이외의 표현 보기, 이것저것에 대한 일치 항목 목록 순환 등이 가능합니다. 정말 훌륭합니다.

신속하게 처리할 수 있다면 평가판이 종료되기 전에 대규모 프로젝트의 #include 구조를 리팩터링할 수 있습니다.그럼에도 불구하고 라이센스당 약 35달러로 비용이 많이 들지 않습니다.

그것이하는 일은 거의 완벽합니다.#include 그래프뿐만 아니라 공유 파일의 프로젝트 간 종속성, 빌드 시간에 대한 영향, 그리드의 세부 속성도 완벽합니다.

좋은 소식: redhat 소스 탐색기 (Windows에서도 실행됩니다).물론, 앞에서 언급한 컴파일러 스위치는 뛰어난 구문 분석 기능을 갖추고 있으며 이것이 MFC, Qt 및 해당 마법 키워드를 어떻게 처리할지 잘 모르겠습니다.

redhat Source-Navigator

구축 KeithB의 답변, 자동으로 1) 종속 파일을 생성하고, 2) 최신 상태로 유지하고, 3) makefile에서 사용하는 GNUmake 구문은 다음과 같습니다.

.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)

(들여쓰기를 하드탭으로 변경하세요.)

당신은 또한 확인할 수 있습니다 마케데펜던드:

http://en.wikipedia.org/wiki/Makedependent

http://www.xfree86.org/current/makedependent.1.html

C++에 대한 이해 당신을 도울 수 있어야합니다:이는 Perl에서 액세스할 수 있는 데이터베이스를 구축합니다.

cscope(http://cscope.sourceforge.net/)는 독립 실행형 xterm에서 이 작업을 수행하고 즐겨 사용하는 편집기 내에서도 사용할 수 있습니다. 이는 훌륭한 emacs 및 vi/vim 지원을 제공합니다.

무료 도구가 있습니다 파일 종속성 감시자 포함

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top