Doxygen

Tips

 * If an enum is inside a namespace, the enum does not show up in the documentation unless you document the namespace.
 * The syntax for documentation after a member is  or similar.
 * Excluding classes from appearing in doxygen documentation can be accomplished using  and.

Installation
To get nice looking graphs, use GraphViz with libcairo support

General Configuration
These are some recommended settings - first of all, don't make empty detailed description sections that clutter the output: EXTRACT_ALL           = NO   # - don't make empty descriptions for #  undocumented stuff ALWAYS_DETAILED_SEC   = NO   # - similar to the above option BRIEF_MEMBER_DESC     = YES  # - include first sentence with methods #  on class pages HIDE_UNDOC_MEMBERS    = NO HIDE_UNDOC_CLASSES     = NO Namespaces on a separate page, not in class names: HIDE_SCOPE_NAMES      = YES SORT_BY_SCOPE_NAME    = YES SHOW_NAMESPACES       = YES These options relate to inheritance and encapsulation: EXTRACT_PRIVATE       = YES  # - this should be fine for smaller #  projects EXTRACT_STATIC        = YES INHERIT_DOCS          = YES Group members: SUBGROUPING           = YES Various options: QUIET                 = YES  # - output only warnings and errors JAVADOC_AUTOBRIEF     = YES  # - \brief is not necessary

Graph Configuration
CLASS_DIAGRAMS        = YES CLASS_GRAPH           = YES GRAPHICAL_HIERARCHY   = NO   # - looks horrible if you have many #  classes COLLABORATION_GRAPH   = YES HAVE_DOT              = YES  # - if you have GraphViz DOT_FONTSIZE          = 6    # - looks a bit nicer CALL_GRAPH            = NO   # - use @callgraph instead

Tips
Plural hack - if you want to pluralize a class name but still want the link to the class: /** This is a set of Thing instances. */            <- the preferred, simplest way /** This is a set of @link Thing Things @endlink. */ <- a little more messy Global functions - to generate documentation for a global function or variable, the function or variable must belong to a group or a file, e.g.: /** @file someheader.h */ /** This is a global function. */ void aGlobalFunction(void); PDF LaTeX - to generate a PDF manual, set these commands in doxygen.cfg: GENERATE_LATEX        = YES USE_PDFLATEX          = YES Avoid automatic link generation for a word /** This %Word will not be linked */