doxygen으로 간단한 클래스 다이어그램을 생성하는 방법을 설명하는 자료를 찾고 있었지만 찾을 수 없었습니다. 아무도 도울 수 있습니까?
C ++ 파일 집합에서 아래와 같이 다이어그램을 만들어야합니다.
이 작업을 더 쉽게 수행 할 수있는 더 좋은 도구가 있으면 알려주세요.
답변:
Doxygen은 상속 다이어그램을 만들지 만 전체 클래스 계층을 만들 것이라고 생각하지 않습니다. GraphViz 도구를 사용할 수 있습니다. Doxygen GUI 프런트 엔드 도구를 사용하는 경우에서 관련 옵션을 찾을 수 있습니다 Step2: -> Wizard tab -> Diagrams
. DOT 관계 옵션은 전문가 탭 아래에 있습니다.
흠, 이것은 약간 오래된 질문 인 것 같지만 지난 며칠 동안 Doxygen 구성을 엉망으로 만들었 기 때문에 내 머리는 여전히 현재 정보로 가득 차있는 동안 찔러 보자.
이전 답변에는 거의 있다고 생각합니다.
누락 된 옵션은 COLLABORATION_GRAPH = YES
Doxyfile 에 추가 하는 것입니다. 나는 당신이 doxywizard GUI 어딘가에서 동등한 일을 할 수 있다고 가정합니다 (나는 doxywizard를 사용하지 않습니다).
따라서보다 완전한 예로서 내가 사용하는 UML 출력과 관련된 일반적인 "Doxyfile"옵션은 다음과 같습니다.
EXTRACT_ALL = YES
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = NO
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
UML_LOOK = YES
UML_LIMIT_NUM_FIELDS = 50
TEMPLATE_RELATIONS = YES
DOT_GRAPH_MAX_NODES = 100
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = YES
이러한 설정은 "상속"( CLASS_GRAPH=YES
) 및 "공동 작업"( COLLABORATION_GRAPH=YES
) 다이어그램을 모두 생성합니다 .
doxygen 출력의 "배포"대상에 따라 설정 DOT_IMAGE_FORMAT = svg
도 사용할 수 있습니다. svg 출력으로 다이어그램은 .png와 같은 비트 맵 형식의 고정 해상도 대신 "확장 가능"합니다. IE 이외의 브라우저에서 출력을 보는 경우 INTERACTIVE_SVG = YES
생성 된 svg 다이어그램의 "대화 형 확대 / 축소 및 이동"을 허용하는 것도 있습니다 . 나는 얼마 전에 이것을 시도했고 svg 출력은 시각적으로 매우 매력적 이었지만 당시에는 svg에 대한 브라우저 지원이 여전히 약간 일치하지 않았으므로 최근 상황이 개선되었을 수 있습니다.
다른 의견에서 언급했듯이 이러한 설정 중 일부 ( DOT_GRAPH_MAX_NODES
특히)는 잠재적 인 성능 영향을 미치므로 YMMV입니다.
저는 "RTFM"스타일 답변을 싫어하는 경향이 있으므로이 문장에 대해 사과드립니다.이 경우에는 Doxygen 문서가 정말 친구입니다. 위에서 언급 한 설정에서 Doxygen 문서를 확인하세요. http://www.doxygen.nl/manual/config.html .
RECURSIVE
파일을 YES
doxys 파일을 편집하고 GENERATE_UML (그와 비슷한 것)을 true로 설정해야한다고 생각합니다. 그리고 dot / graphviz가 설치되어 있어야합니다.
가장 높은 2 개의 찬성 답변이 맞습니다. 오늘 부터 기본 설정에서 변경해야 할 유일한 것은 내장 생성기 대신 도트를 사용하여 생성을 활성화하는 것입니다.
몇 가지 중요한 참고 사항 :
html/inherits.html
또는 (웹 사이트 탐색에서) 클래스 => 클래스 계층 구조 => "텍스트 클래스 계층 구조로 이동"에서 찾을 수 있습니다 .T
.
foo
에서 상속 T
과 T
템플릿 유형 매개 변수가 기본값이 같은 기본 가정됩니다. 기본값과 다른 곳 bar
에서 상속되는 유형 이 있으면 부모가 있습니다. 그리고 공통의 부모가되지 않습니다.foo<U>
U
bar
foo<U>
foo<>
bar<U>
variant
에서 상속하기 위해 모든 인스턴스화가 표시됩니다 variant<Ts...>
.<...>
기본값이없는 유형 및 비 유형 매개 변수를 나타내는 이름에 문자열 이 있습니다 .