Doxygen

From Schmid.wiki
Jump to: navigation, search

Contents

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 \cond DONT_INCLUDE and \endcond.

Installation

To get nice looking graphs, use GraphViz with libcairo support

Configuration

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 */

References

Personal tools