📅 2014-Jun-18 ⬩ ✍️ Ashwin Nanjappa ⬩ 🏷️ cpp, doxygen ⬩ 📚 Archive
If you do not use an IDE, then Doxygen is a heaven-send for understanding and working with a huge C++ codebase. To make your life easier, you can configure Doxygen to give you as much information as possible in its documentation. Here are the settings I use for C++ code:
If the project does not have a Doxyfile configuration file, then using Doxywizard is a convenient way to generate this file. I like to use its Wizard mode to quickly set the most important settings.
In the Mode topic, for Select the desired extraction mode choose All Entities. Also enable the Include cross-referenced source code in the output option.
In the Mode topic, choose Optimize for C++ output.
In the Output topic, choose HTML with navigation panel and search function.
In the Diagrams topic, choose to use Dot from the GraphViz package. Choose to generate Dot graphs for all the possible entities, including generating header include graphs.
In the configuration file, I like to enable a few more options:
BUILTIN_STL_SUPPORT = YES
# Show private members of class
EXTRACT_PRIVATE = YES
# Show static members of class
EXTRACT_STATIC = YES
# Show members of anonymous namespace
EXTRACT_ANON_NSPACES = YES
# Show which header file to include to use this class or member
SHOW_GROUPED_MEMB_INC = YES
# Add all the header and source file extensions used
FILE_PATTERNS = *.cpp *.h *.hpp
# Function source code shown inline
INLINE_SOURCES = YES
# Show all functions that reference current function
REFERENCED_BY_RELATION = YES
# Show all functions referenced by current function
REFERENCES_RELATION = YES
# Generate class diagrams for base class
CLASS_DIAGRAMS = YES
# Number of threads to use for DOT
DOT_NUM_THREADS = 4
# Use UML notation for class diagrams
UML_LOOK = YES
# Show all members in UML class
UML_LIMIT_NUM_FIELDS = 0
# Show relationship for templates in graphs
TEMPLATE_RELATIONS = YES
To get started quickly, I have shared my Doxyfile for C++ and CUDA code here. Just look for foobar
in the file and replace with your project name and directories.
Tried with: Doxygen 1.8.6 and Ubuntu 14.04