Doxygen can use the "dot" tool from graphviz 1.5 to generate more advanced diagrams & graphs. Graphviz is an open-sourced, cross-platform graph drawing toolkit from AT&T and Lucent Bell Labs and can be found at http://www.research.att.com/sw/tools/graphviz/
If you have the "dot" tool available in the path, you can set HAVE_DOT to YES
in the configuration file to let doxygen use it.
Doxygen uses the "dot" tool to generate the following graphs:
YES
, a graphical representation of the class hierarchy will be drawn, along with the textual one. Currently this feature is supported for HTML only.\n Warning: When you have a very large class hierarchy where many classes derive from a common base class, the resulting image may become too big to handle for some browsers. YES
, a graph will be generated for each documented class showing the direct and indirect inheritance relations. This disables the generation of the build-in class inheritance diagrams. YES
, an include dependency graph is generated for each documented file that includes at least one other file. This feature is currently supported for HTML and RTF only. A
has a member variable m_a
of type class B
, then A
has an arrow to B
with m_a
as label). The elements in the class diagrams in HTML and RTF have the following meaning:
The elements in the class diagram in
have the following meaning:
The elements in the graphs generated by the dot tool have the following meaning:
A
uses class B
, if class A
has a member variable m
of type C, where B is a subtype of C (e.g. C could be B
, B*
, T<B>*
). Here are a couple of header files that together show the various diagrams that doxygen can generate:
diagrams_a.h
#ifndef _DIAGRAMS_A_H #define _DIAGRAMS_A_H class A { public: A *m_self; }; #endif
diagrams_b.h
#ifndef _DIAGRAMS_B_H #define _DIAGRAMS_B_H class A; class B { public: A *m_a; }; #endif
diagrams_c.h
#ifndef _DIAGRAMS_C_H #define _DIAGRAMS_C_H #include "diagrams_c.h" class D; class C : public A { public: D *m_d; }; #endif
diagrams_d.h
#ifndef _DIAGRAM_D_H #define _DIAGRAM_D_H #include "diagrams_a.h" #include "diagrams_b.h" class C; class D : virtual protected A, private B { public: C m_c; }; #endif
diagrams_e.h
#ifndef _DIAGRAM_E_H #define _DIAGRAM_E_H #include "diagrams_d.h" class E : public D {}; #endif
Click here
for the corresponding HTML documentation that is generated by doxygen
(EXTRACT_ALL
= YES
is used here).
Go to the next section or return to the index.