This guide illustrates how to set up the Doxygen config file to document C/C++, python, java, and Fortran code. See also https://doxygen.nl/manual/index.html.

Step-by-step guide

Prerequisites: You must have a working version of Doxygen installed on your system.

  1. Navigate to the top-level directory of the code you want to document.

    Use doxygen -g <config-file> to create a new config file. If you don't provide a name for config-file , Doxygen will generate a file named Doxyfile.

    # Our files are located in /path/to/src/new_project
    cd new_project
    
    # in project folder, do
    doxygen -g <config-file>
    # replacing <config-file> with your chosen file name, or leaving it empty
  2. In the configuration file, there are some general settings that need to be changed from their default values:

    # ----------------------------------------------------
    # GENERAL SETTINGS
    
    # set the project name
    PROJECT_NAME = "My New Project"
    
    # ----------------------------------------------------
    # SPECIFYING WHAT SHOULD BE DOCUMENTED
    
    # to include files in subdirectories, we need to change the RECURSIVE tag from NO to YES
    RECURSIVE = YES
    
    # to map and generate documentation for all files, set EXTRACT_ALL from NO to YES
    EXTRACT_ALL = YES
    
    # to include private class members in the documentation, set EXTRACT_PRIVATE from NO to YES
    EXTRACT_PRIVATE = YES
    
    # to include static class members in the documentation, set EXTRACT_STATIC from NO to YES
    EXTRACT_STATIC = YES
    
    # ----------------------------------------------------
    # BETTER OUTPUT DESIGN
    
    # to improve readability of output, set HIDE_SCOPENAMES from NO to YES
    HIDE_SCOPE_NAMES = YES
    
    # ----------------------------------------------------
    # INCLUDING SOURCE CODE IN DOCUMENTATION
    
    # to cross-reference source files with the documentation, SOURCE_BROWSER needs to be set to YES
    SOURCE_BROWSER = YES
    
    # to be able to apply input filters to the source files later on, set
    FILTER_SOURCE_FILES = YES
  3. There are several options to further customize Doxygen. We will discuss some of them in the following.
    1. including and excluding files

      # assuming our project has the following structure:
      # new_project
      # |– Doxyfile
      # |– python_files
      # |  |– a_file.py
      # |  |– another_file.py
      # |  |– examples
      # |     |– example1.py
      # |     |  ...
      # |     |– example100.py
      # |– cpp_files
      # |  |– headerfiles
      # |  |  |– some_header.h
      # |  |  |– another_header.h
      # |  |– src
      # |	 |	|– some_file.cpp
      # |	 |	|– another_file.cpp
      # |	 |– examples
      # |		|– more_examples.cpp
      # |– yet_another_folder
      
      # include by folder: we want to ignore yet_another_folder
      INPUT = python_files cpp_files
      
      # exclude all example files
      EXCLUDE_PATTERNS = */examples/*
      
      # only include .py and .cpp files
      FILE_PATTERNS = .py .cpp
    2. language-specific settings: It is possible to optimize Doxygen for a specific programming language. If your project contains only of C/C++, python/java, or Fortran files, you can specify this in the settings.

      # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
      # only. Doxygen will then generate output that is more tailored for C. For
      # instance, some of the names that are used will be different. The list of all
      # members will be omitted, etc.
      # The default value is: NO.
      OPTIMIZE_OUTPUT_FOR_C  = NO
      
      # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
      # Python sources only. Doxygen will then generate output that is more tailored
      # for that language. For instance, namespaces will be presented as packages,
      # qualified scopes will look different, etc.
      # The default value is: NO.
      OPTIMIZE_OUTPUT_JAVA   = NO
      
      # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
      # sources. Doxygen will then generate output that is tailored for Fortran.
      # The default value is: NO.
      OPTIMIZE_FOR_FORTRAN   = NO
    3. There are many ways to further customize Doxygen. The autogenerated config file includes detailed descriptions of every setting.

Related articles

Related articles appear here based on the labels you select. Click to edit the macro and add or change labels.

Related issues