2010-06-18 4 views
33

나는 해당 파일에 포함 된 모든 파일을 표시하고 해당 파일에 포함 된 모든 파일을 표시하는 도구 (가능하면 Visual Studio 플러그인)를 찾고 있습니다.어떻게 C/C++ #include 그래프를 쉽게 볼 수 있습니까?

+2

dupe? http://stackoverflow.com/questions/42308/tool-to-track-include-dependencies –

+0

예. 내 검색 fu가 실패했습니다. – CannibalSmith

+0

@JohanKotlinski, 나는 그 주제가 그래프를 만드는 방법에 대한 의존성을 추적하는 것과 관련이 없다고 생각합니다. 중요한 차이는 IMO입니다. –

답변

9

DoxygenGraphviz의 도움을 받아 수행 할 수 있습니다. 먼저 구성 파일을 편집해야합니다. 처음에는 쉽게 할 수 없지만 나중에 편집 할 필요는 없습니다.

+1

사실, 대부분의 경우 간단합니다. Doxygen 마법사의 Windows GUI를 사용하거나 명령 행에서'doxygen -g'를 실행하여 기본'Doxyfile'을 생성 한 다음'INCLUDE_GRAPH' 값을 가지고 있는지 확인하십시오 'INCLUDED_BY_GRAPH'는'YES'로 설정됩니다. 그런 다음 Doxygen을 몇 번 실행하고 출력을 검사하여 매개 변수를 조정해야합니다. –

2

환경 설정에 포함되어 있지 않지만 doxygen이이를 잘 수행합니다.

0

http://www.codeproject.com/KB/applications/includefinder.aspx

이 아닙니다 VS에서 플러그인하지만 자신의 도구에 대한 선발이 될 수 있습니다. 내가보기 엔 VC6 프로젝트 만 읽을 수있는 한, 새로운 VS는 구문 분석하기 쉬운 XML 형식을 가지고 있습니다. 도구가 포함 된 파일을 찾을 수 있도록 기본 포함 경로가 필요합니다. GUI에서 사용자 입력으로 설정 상자를 제공 할 수도 있습니다.

9

아마도 원하지 않지만 Visual Studio 컴파일러 (cl.exe)에는 /showIncludes 옵션이 있습니다. 그러면 파일을 컴파일 할 때 포함되는 트리가 표시됩니다.

단일 파일에 대한이 정보를 원하면 솔루션 탐색기에서 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 "명령 줄"섹션에서 "추가 옵션"에/showIncludes를 추가하십시오. . (VC++ 2005를 사용하고 있기 때문에 최신 버전에서는 다를 수 있습니다.)

출력은 약간 복잡하지만 포함될 내용과 순서는 무엇인지 보여줍니다.

덧붙여 말하자면, GCC와 인텔 C++ 컴파일러 (적어도 내 버전)의 동일한 기능은 -H입니다.

4

Visual Studio 2010을 사용하는 경우 포함 그래프를 생성하는 기능이있는 Microsoft의 새로운 Visualization and Modelling Feature Pack을 사용할 수 있습니다. MSDN subscript를 통해서만 사용할 수 있습니다.

+0

그것이보기에 유용 할 수있는 기능 팩이라면,이 포스트는 적어도 100 개의 upvote가 있어야합니다. –

+0

스크린 샷에서 모델링 기능 팩은 실제로 꿈꾸는 도구처럼 보입니다. 그러나 MSDN 구독뿐만 아니라 다운로드 자격을 얻으려면 Premium 또는 Ultimate Visual Studio가 필요합니다 .-( – BuschnicK

+0

그리고 일반적으로 C++ 프로젝트에서는 작동하지 않습니다. –

17

먼저 cinclude2dot.pl은 C/C++ 코드를 분석하고 #include 의존성 그래프를 graphviz에 입력하기위한 점 파일로 생성하는 perl 스크립트입니다. 수동 도구의 ​​종류의 길을 가고 싶어하지 않는 경우

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

후 지금까지 우승자로 손을 아래로 내 의견에 ProFactor에서 "IncludeManager"로 알려진 도구입니다.

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

는 무료 평가판있다, 그것은 굉장합니다. Visual Studio 용 플러그인으로 완전히 통합되어 있으므로 여기를 클릭하면 이니 여기 이 포함 된 곳으로 이동합니다..

툴팁 마우스 오버는 원하는 모든 정보를 제공하며 드릴 다운/업하고 신경 쓰지 않는 전체 하위 트리를 제거하고 그래프 이외의 표현을보고이 목록과 일치하는 목록을 차례로 탐색합니다 멋지다.

재판이 끝나기 전에 큰 프로젝트의 #include 구조를 리팩토링 할 수 있습니다.그럼에도 불구하고 라이센스 당 약 35 달러가 들지 않습니다.

무엇을 위해서, 그것은 거의 완벽합니다. 그래프 포함 #뿐만 아니라 공유 파일의 프로젝트 간 종속성, 빌드 시간에 영향, 그리드의 세부 속성 등이 완벽합니다.

+0

IncludeManager는 쉽게 트릭을 수행하고 저렴한 것처럼 보입니다. 나는 그 하나의 기회를 줄 것이다. – Boinst

4

당신은 Stack Overflow answer이 제안하는 방법을 시도 할 수 있습니다 :

는 C/C++이 -> 고급 프로젝트 설정 "쇼 포함을". 그 트리를 생성합니다. 컴파일러 스위치에 매핑됩니다. /showIncludes

관련 문제