Skip to content

Latest commit

 

History

History
327 lines (306 loc) · 111 KB

DoxygenParamEvaluation.md

File metadata and controls

327 lines (306 loc) · 111 KB

Doxygen Param Evaluations

This serves as an overview of all potential parameters for doxygen, which are normally configured via the Doxygen.in-file. Every parameter is paired with an evaluation of whether it makes sense to have it be configurable by the user and why.

Notes:

  • possible/default values are sometimes not given for unsupported parameters
  • Boolean values in the Doxyfile.in are set with strings of "YES"/"NO", rather than True/False
  • When no other explanation is given, the parameter is probably a useful feature to the user and has low/no potential for causing problems

Project related configuration options

Parameter Doxygen? Sphinx? Value Default Description Explanation
DOXYFILE_ENCODING No No - UTF-8 Encoding of Doxyfile.in (Doxygen configuration file) User has no contact with Doxyfile.in and other encoding could cause problems with some string variables.
PROJECT_NAME Yes (required) Yes (required) str - Project Title used all over the generated documentation The default value "My Project" would get confusing fast for multiple projects. Also, this is used for determining the project path when none is given.
PROJECT_NUMBER Yes Yes str None Project version/revision number
PROJECT_BRIEF Yes Yes str None One-line/short description of the project
PROJECT_LOGO Yes Yes Path None Path to project logo or icon (max 200x55px) for use within documentation
PROJECT_ICON Yes Yes Path None Path to project icon for use in the tabs
OUTPUT_DIRECTORY No (for simplicity) No (for simplicity) - * Path to which generated documentation is written Freely user-configurable output paths could break the toolchain and would likely require significant "defensive measures" with the toolchain.
CREATE_SUBDIRS No No bool NO Distribute documentation output across multiple directories to potentially improve file system performance Subdirectories would likely complicate post processing by later parts of the toolchain.
CREATE_SUBDIRS_LEVEL No No - - Number of levels of subdirectories generated We do not support subdirectories.
ALLOW_UNICODE_NAMES No No bool NO Allow non-ASCII characters in file names (will be escaped otherwhise) Reduce potential for unexpected errors caused by something this insignificant and thus improve file system support of documentation output.
OUTPUT_LANGUAGE Yes Yes str English Language used for all constant output within documentation.
BRIEF_MEMBER_DESC Yes No? (probably does nothing here) bool YES Include brief member descriptions after the members listed in file/class documentation (similar to Javadoc)
REPEAT_BRIEF Yes No? (probably does nothing here) bool YES Repeat the brief description of member/function before detailed description
ABBREVIATE_BRIEF No No (probably does nothing here) list[str] it's complicated Automatically abbreviate brief descrition Probably too complicated for what it is worth and could potentially cause unexpected problems with certain inputs.
ALWAYS_DETAILED_SEC Yes No? (probably does nothing here) bool NO When REPEAT_BRIEF enabled, generate detailed section even when only brief exists
INLINE_INHERITED_MEMB Yes Yes? (may not do anything) bool NO Show inherited members as members of child class
FULL_PATH_NAMES Yes Yes? (may not do anything) bool YES Files are referenced by their full (relative?) path instead of just the shortest possible unique path
STRIP_FROM_PATH No No Path None Shorten full path by this given path / only display file paths starting from after this given path This will be handled automatically, but user can still disable FULL_PATH_NAMES.
STRIP_FROM_INC_PATH No No Path None Shorten include paths in documentation by this given path Could probably cause issues in such a generalized scenario.
SHORT_NAMES No No bool NO Shorten file names to support file systems with file/directory name length restrictions (DOS etc.) People (should) have moved on from file systems, where this is necessary. (Note, that this is only about where the documentation should be stored)
JAVADOC_AUTOBRIEF No No bool NO Interpret first line (until first dot) of Javadoc-style comment as brief without explicitly requiring a @brief tag This is probably better handled by the docstring converter.
JAVADOC_BANNER No No bool NO* Enable to interpret lines like /******... as beginning of Javadoc-style comment banner, instead of ignoring them We may want this set to YES by default / always on.
QT_AUTOBRIEF No No bool NO Interpret first line (until first dot) of Qt-style comment as brief without explicitly requiring a @brief tag This is probably better handled by the docstring converter.
MULTILINE_CPP_IS_BRIEF No No bool No Interpret multi-line C++ special block comments (//! or ///) as brief instead of detailed descrition Set to NO, this likely works as we intend it to.
PYTHON_DOCSTRING No No bool YES Treat Python docstrings as preformatted text and ignore Doxygen special commands within them as a trade-off. Set to YES, this likely works as we intend it to.
INHERIT_DOCS No No bool YES Undocumented members inherit documentation of the members they re-implement (if applicable) Set to YES, this likely works as we intend it to.
SEPARATE_MEMBER_PAGES Yes? No (probably does nothing here) bool NO Split members of files/classes/namespaces into separate pages. Not 100% sure, if this is unproblematic for later tools. Note: Members are separated by default when using exhale.
TAB_SIZE Yes No? (probably does nothing here) int 4 Number of spaces to replace tabs in code snippets with
ALIASES No No list[str]? None Add user-defined doxygen commands Probably too complicated for what it is worth and could potentially cause unexpected problems with certain inputs.
OPTIMIZE_OUTPUT_FOR_C Yes No? (probably does nothing here) bool NO Change some terminology to be more tailored to C (not C++), omit list of all members, etc. May cause problems with Sphinx later.
OPTIMIZE_OUTPUT_JAVA No No bool NO Change output to be more tailored to Java (namespaces = packages etc.) We do not plan to support Java.
OPTIMIZE_FOR_FORTRAN No No bool NO Change output to be more tailored to Fortran We do not plan to support Fortran.
OPTIMIZE_OUTPUT_VHDL No No bool NO Change output to be more tailored to VHDL We do not plan to support VHDL.
OPTIMIZE_OUTPUT_SLICE No No bool NO Change output to be more tailored to Slice We do not plan to support Slice.
EXTENSION_MAPPING No No list[str]? None Change mapping of language parser used per file extension (format: "ext=language") We may want to default to using "no_extension=md"
MARKDOWN_SUPPORT No No bool YES Look for markdown formatting in all comments We want this to stay enabled, as it should not hurt and is likely beneficial (in case there is intentional or unintentional markdown in docstrings).
TOC_INCLUDE_HEADINGS Yes No? (probably does nothing here) int 5 If MARKDOWN_SUPPORT is enabled, all headers up to this level are included in table of contents
MARKDOWN_ID_STYLE Yes No? (probably does nothing here) str DOXYGEN Specify algorithm for generating markdown heading IDs (DOXYGEN or GITHUB) There likely is a good reason why there is a GITHUB option.
AUTOLINK_SUPPORT No? No? (probably does nothing here) bool YES Enable to automaticaly link potentially corresponding words to classes, namespaces, etc. (except they start with '%') Probably overall helpful, but might occasionally cause some confusion when the links are wrong.
BUILTIN_STL_SUPPORT No No bool NO Enable to automatically match STL classes (std::string, std::vector.) (also benefits inheritance/collaboration diagrams) We may want this to be True by default, because it is unlikely such a tag file exists, when there is no proper documentation in the first place.
CPP_CLI_SUPPORT No? No? bool NO If you use Microsoft's C++/CLI language, you should set this option to YES to enable parsing support. (a bit unclear) Probably does nothing here.
SIP_SUPPORT Yes? Yes? bool NO If whole project consists of SIP (Python bindings for C generator), enable to to use public inheritance when not explicitly protected. Requires some additional knowledge from the user, but "not enabling by accident" should not cause much harm.
IDL_PROPERTY_SUPPORT Yes Yes bool YES If Microsoft IDL is present, use properties for getters/setters where applicable Judging from being enabled by default, this does not cause harm even when Microsoft IDL is not used. Option to disable given anyway.
DISTRIBUTE_GROUP_DOC No No bool NO If member grouping is used, use documentation of first grouß members for the other members as well The way it is described, this could unintentionally overwrite documentation of group members that are not the first.
GROUP_NESTED_COMPOUNDS Yes? Yes? bool NO Enable to automatically add nested structs/classes to group when "parent" is added (otherwise \ingroup is required) Seems really niche.
SUBGROUPING Yes? Yes? bool YES Enable to allow class member groups of the same type (i. e. group of public functions) (can be disabled per class by \nosubgrouping) Seems really niche.
INLINE_GROUPED_CLASSES Yes? No? (probably does nothing here) bool NO Enable to show group members inside group they are included instead of on separate pages (does not work with SEPARATE_MEMBER_PAGES) Seems really niche.
INLINE_SIMPLE_STRUCTS Yes? No? (probably does nothing here) bool NO Enable to inline structs/classes only containing typedefs and public data fields to page of their parent class/namespace Seems really niche.
TYPEDEF_HIDES_STRUCT Yes Yes? bool NO Enable to refer to typedefed struct/uniion/enum by name of typedef instead of listing typedefs as members
LOOKUP_CACHE_SIZE No No int 0 Specify size of lookup cache for types/symbols (2^(16+LOOKUP_CACHE_SIZE)) User likely can not guess how many different types/symbols will be encountered. Default should be way higher, as memory is not that sparse these days. However, a flag for "small cache" could be added as a safety measure.
NUM_PROC_THREADS No No int 1 Specify number of threads doxygen is allowed to use for input processing (use DOT_NUM_THREADS for specifying threads for dot graph generation) We want this set to 0 to automatically determine the number of threads based on processor cores
TIMESTAMP Yes No? (probably does nothing here) str NO Specify whether and how to add timestamp to each page (YES, NO, DATETIME or DATE) (relevant when trying to compare output of multiple runs) Only allow [DATETIME, DATE, NO] and default to DATETIME (more traceability by default for safety reasons)

Build related configuration options

Parameter Doxygen? Sphinx? Value Default Description Explanation
EXTRACT_ALL No No bool NO Enable to extract all entities whether documented or not (except privat/static) We want this to be True.
EXTRACT_PRIVATE Yes Yes bool NO Enable to include private members in documentation We want this to be True by default.
EXTRACT_PRIV_VIRTUAL Yes Yes bool No Enable to include private virtual methods in documentation We want this to be True by default.
EXTRACT_PACKAGE Yes Yes bool No Enable to include members with package or internal scope in documentation We want this to be True by default.
EXTRACT_STATIC Yes Yes bool No Enable to include static members of files in documentation We want this to be True by default.
EXTRACT_LOCAL_CLASSES Yes Yes bool No Enable to include locally defined structs/classes in documentation (not for Java) We want this to be True by default.
EXTRACT_LOCAL_METHODS No No bool No Enable to include locally defined methods in documentation (only Objective-C) We do not support Objective-C.
EXTRACT_ANON_NSPACES Yes Yes bool No Enable to include members of anonymous namespaces in documentation We want this to be True by default.
RESOLVE_UNNAMED_PARAMS No No bool YES Enable to derive names of unnamed parameters by corresponding definition We want this to be True.
HIDE_UNDOC_MEMBERS No No bool NO Enable to hide undocumented members (not in overview, only documentaion) Overwritten by EXTRACT_ALL = True.
HIDE_UNDOC_CLASSES No No bool NO Enable to hide undocumented classes (not in overview, only documentaion) Overwritten by EXTRACT_ALL = True.
HIDE_FRIEND_COMPOUNDS No? No? bool NO Enable to hide friend declarations We (probably) want this to be True.
HIDE_IN_BODY_DOCS No No bool NO Enable to hide documentation blocks inside function body (otherwise, they are appended)
INTERNAL_DOCS No No bool NO Enable to include documentation after \internal comment We want this to be True.
CASE_SENSE_NAMES No No str SYSTEM Set case sensitivity for output files This is about the system the docs are generated on.
HIDE_SCOPE_NAMES Yes Yes? bool NO Enable to hide full class and namescape scopes in documentaiton
HIDE_COMPOUND_REFERENCE Yes No? bool NO Enable to hide class reference etc. on documentation pages
SHOW_HEADERFILE Yes No? bool YES Enable to show which header file to include to use a class
SHOW_INCLUDE_FILES Yes No? bool YES Enable to show which files a file includes in its documentation
SHOW_GROUPED_MEMB_INC Yes No? bool NO Enable to show which file to include to use a group member
FORCE_LOCAL_INCLUDES
INLINE_INFO
SORT_MEMBER_DOCS
SORT_BRIEF_DOCS
SORT_MEMBERS_CTORS_1ST
SORT_GROUP_NAMES
SORT_BY_SCOPE_NAME
STRICT_PROTO_MATCHING
GENERATE_TODOLIST
GENERATE_TESTLIST
GENERATE_BUGLIST
GENERATE_DEPRECATEDLIST
ENABLED_SECTIONS
MAX_INITIALIZER_LINES
SHOW_USED_FILES
SHOW_FILES
SHOW_NAMESPACES
FILE_VERSION_FILTER
LAYOUT_FILE
CITE_BIB_FILES

Configuration options related to warning and progress messages

Parameter Doxygen? Sphinx? Value Default Description Explanation
QUIET No No bool NO Enable to turn off messages in console It makes more sense to add option to disable logging for the whole toolchain.
WARNINGS Yes Yes bool YES Enable to generate warning messages to stderr Should be called "disable_doxygen_warnings".
WARN_IF_UNDOCUMENTED No No bool - Enable to generate warnings for undocumented members Overwritten by EXTRACT_ALL = True.
WARN_IF_DOC_ERROR No No bool YES Enable to generate warnings for potential documentation errors (duplicates, nonexisting, wrong markup, etc.) We want this to be True (to simplify) and there are probably no cases where this has to be disabled.
WARN_IF_INCOMPLETE_DOC No No bool NO Enable to generate warnings when function parameter documentation is incomplete We want this to be True (to simplify) and there are probably no cases where this has to be disabled.
WARN_NO_PARAMDOC No No bool NO Enable to generate warnings when function documentation is missing parameters or return value Automatically disabled by EXTRACT_ALL = True.
WARN_IF_UNDOC_ENUM_VAL No No bool NO Enable to generate warnings when enum values are not documented Automatically disabled by EXTRACT_ALL = True.
WARN_AS_ERROR No No bool NO Enable to stop doxygen execution immediately when a warning is encountered Depending on the "safety level" it could be a requirement to reject software with undocumented components. However, enabling this would likely stop doxygen before doing much of anything, when not disabling all "ifs".
WARN_FORMAT No No str - Specify text format of warning messages Default format should be sufficient for locating errors, if desired. After all, fixing the documentation is not really a use case for us.
WARN_LINE_FORMAT No No str - Specify custom cut/paste-string for jumping to error locations Default format should be sufficient for locating errors, if desired. After all, fixing the documentation is not really a use case for us.
WARN_LOGFILE No No Path None Path to write logfile of doxygen warnings/errors This should be handled by us rater than the user.

Configuration options related to the input files

Parameter Doxygen? Sphinx? Value Default Description Explanation
INPUT Yes Yes Path - Path to files/directories containing a project's documented source files We default to a Path constructed from the project name, but also want to offer the option to overwrite it with a custom path, when provided.
INPUT_ENCODING Yes Yes str UTF-8 Expected chracter encoding of the source files (output will be UTF-8, see https://www.gnu.org/software/libiconv/ for possible input encodings) There may be cases, where there is no way around the user trying out different encodings, UNLESS we want to implement some kind of auto-detection.
INPUT_FILE_ENCODING Yes Yes list[str] None List of patterns to specify encodings for individual (groups of) files (pattern=encoding (like *.php=ISO-8859-1)) Potentially too complicated for the user's intentions, but may be necessary in some cases, UNLESS we want to implement some kind of file-level auto-detection.
FILE_PATTERNS No No list[str] ... List of patterns (like *.h, *.hpp, etc.) to classify files within INPUT as relevant Default should already contain extensions of all supported relevant file types. We may add ".txt" to not miss documentation of some "off standard C code" etc.
RECURSIVE No No bool NO Enable to parse subdirectories of INPUT as well We want this to be True.
EXCLUDE No No Path None Path to files/directories that should explicitely NOT be included in the documentation Not really applicable for a user that doesn't know the project.
EXCLUDE_SYMLINKS Yes Yes bool NO Enable to exclude files that are symlinks from the documentation
EXCLUDE_PATTERNS No No list[str] None List of wildcard patterns (e. g. /test/) to exclude files from Not really applicable for a user that doesn't know the project.
EXCLUDE_SYMBOLS No No list[str] None List of symbol names to exclude from documentation Not really applicable for a user that doesn't know the project.
EXAMPLE_PATH No No Path None Path to files or directories containing example code fragments We want to operate on a "one directory per project"-basis. If the examples are within the project directory, they should already be included.
EXAMPLE_PATTERNS No No list[str] None List of patterns (like *.h, *.hpp, etc.) to classify files within EXAMPLE_PATH as relevant We do not use EXAMPLE_PATH.
EXAMPLE_RECURSIVE No No bool NO Enable to parse subdirectories of EXAMPLE_PATH as well We do not use EXAMPLE_PATH.
IMAGE_PATH
INPUT_FILTER
FILTER_PATTERNS
FILTER_SOURCE_FILES
FILTER_SOURCE_PATTERNS
USE_MDFILE_AS_MAINPAGE No No? (likely does nothing) Path None Name of a markdown file to incorporate into the main page (index.html) We may want the Readme file to be referenced here, but this will require a search for a top level ".md" or .txt" titled something like "Readme".
FORTRAN_COMMENT_AFTER No No int 72 Number of characters after which a line of Fortran is automatically considered as a comment We do not support fortran.

Configuration options related to source browsing

Parameter Doxygen? Sphinx? Value Default Description Explanation
SOURCE_BROWSER Yes Yes? (might do nothing) bool NO Enable to generate list of source files to cross-reference in documentation Could be combined with VERBATIM_HEADERS for a "no source code" option. As this is tailored for use with already open-source software, we may want this True by default and necessity of this as an option is debatable.
INLINE_SOURCES Yes Yes? (might do nothing) bool NO Enable to inline function bodies, macros, enums or list initialized variables directly into documentation
STRIP_CODE_COMMENTS Yes Yes? (might do nothing) bool YES Enable to remove "special command blocks" from source code fragments in documentation
REFERENCED_BY_RELATION Yes Yes? (might do nothing) bool NO Enable to list all documented functions referencing it for each documented entity We may want this to be true by default.
REFERENCES_RELATION Yes Yes? (might do nothing) bool NO Enable to list all documented entities called/used for each documented function We may want this to be true by default.
REFERENCES_LINK_SOURCE bool YES
SOURCE_TOOLTIPS
USE_HTAGS
VERBATIM_HEADERS
CLANG_ASSISTED_PARSING
CLANG_ADD_INC_PATHS
CLANG_OPTIONS
CLANG_DATABASE_PATH

Configuration options related to the alphabetical class index

Parameter Doxygen? Sphinx? Value Default Description Explanation
ALPHABETICAL_INDEX No No bool YES Enable to generate alphabetical index of all compounds We want this to be True.
IGNORE_PREFIX No No list None Provide certain prefixes to cause compounds to not appear in alphabetical index Too convoluted/complicated and potentially unpredictably error-prone.

Configuration options related to the HTML output

Parameter Doxygen? Sphinx? Value Default Description Explanation
GENERATE_HTML No No? bool YES Enable HTML output Always True for Doxygen, always False for Sphinx. No need for both.
HTML_OUTPUT No No Path - Path to directory to generate XML output We want to control this. Should be "html" when using Sphinx, but could be the main directory when using only Doxygen.
HTML_FILE_EXTENSION No No str .html File extension for generated HTML files As 4 characters are no problem for modern file systems, there seems to be no real reason to ever change this.
HTML_HEADER Yes No? (probably does nothing) Path None Path to an optional custom HTML header (use "doxygen -w html new_header.html new_footer.html new_stylesheet.css" to generate a template)
HTML_FOOTER Yes No? (probably does nothing) Path None Path to an optional custom HTML footer (use "doxygen -w html new_header.html new_footer.html new_stylesheet.css" to generate a template)
HTML_STYLESHEET No No Path None Path to an optional custom stylesheet (use "doxygen -w html new_header.html new_footer.html new_stylesheet.css" to generate a template) We provide an optional additional argument to select between the default stylesheet and "doxygen awesome" (an open-source modern-looking doxygen theme)
HTML_EXTRA_STYLESHEET Yes No? (probably does nothing) Path None Path to an optional additional stylesheet that can override the main stylesheet This is the preferred option to set a custom stylesheet and should make it easier for the user to generate a valid stylesheet
HTML_EXTRA_FILES
HTML_COLORSTYLE
HTML_COLORSTYLE_HUE
HTML_COLORSTYLE_SAT
HTML_COLORSTYLE_GAMMA
HTML_DYNAMIC_MENUS
HTML_DYNAMIC_SECTIONS
HTML_CODE_FOLDING
HTML_COPY_CLIPBOARD
HTML_PROJECT_COOKIE
HTML_INDEX_NUM_ENTRIES
GENERATE_DOCSET
DOCSET_FEEDNAME
DOCSET_FEEDURL
DOCSET_BUNDLE_ID
DOCSET_PUBLISHER_ID
DOCSET_PUBLISHER_NAME
GENERATE_HTMLHELP
CHM_FILE
HHC_LOCATION
GENERATE_CHI
CHM_INDEX_ENCODING
BINARY_TOC
TOC_EXPAND
SITEMAP_URL
GENERATE_QHP
QCH_FILE
QHP_NAMESPACE
QHP_VIRTUAL_FOLDER
QHP_CUST_FILTER_NAME
QHP_CUST_FILTER_ATTRS
QHP_SECT_FILTER_ATTRS
QHG_LOCATION
GENERATE_ECLIPSEHELP
ECLIPSE_DOC_ID
DISABLE_INDEX
GENERATE_TREEVIEW
FULL_SIDEBAR
ENUM_VALUES_PER_LINE
TREEVIEW_WIDTH
EXT_LINKS_IN_WINDOW
OBFUSCATE_EMAILS
HTML_FORMULA_FORMAT
FORMULA_FONTSIZE
FORMULA_MACROFILE
USE_MATHJAX
MATHJAX_VERSION
MATHJAX_FORMAT
MATHJAX_RELPATH
MATHJAX_EXTENSIONS
MATHJAX_CODEFILE
SEARCHENGINE
SERVER_BASED_SEARCH
EXTERNAL_SEARCH
SEARCHENGINE_URL
SEARCHDATA_FILE
EXTERNAL_SEARCH_ID
EXTRA_SEARCH_MAPPINGS

Configuration options related to the LaTeX output

Not supported and off by default.

Configuration options related to the RTF output

Not supported and off by default.

Configuration options related to the man page output

Not supported and off by default.

Configuration options related to the XML output

Parameter Doxygen? Sphinx? Value Default Description Explanation
GENERATE_XML Yes? No bool NO Enable generating XML files capturing the projects structure and documentation Must be True if later steps in toolchain require Doxygen's XML output as input and when using Sphinx, because Breathe/Exhale depend on it.
XML_OUTPUT No No Path - Path to directory to generate XML output If necessary, controlled by us, not the user.
XML_PROGRAMLISTING No No bool YES Enable to include program listings (including highlighting and cross references) in XML output We want this to be True, because the XML output is used as an intermediate to get as much data sourced by Doxygen to other tools (Sphinx etc.)
XML_NS_MEMB_FILE_SCOPE No No bool NO Enable to include namespace members in file scope in XML output (closer to HTML output) We want this to be True, because the XML output is used as an intermediate to get as much data sourced by Doxygen to other tools (Sphinx etc.)

Configuration options related to the DOCBOOK output

Not supported and off by default.

Configuration options related to the Autogen Definitions output

Not supported and off by default. Also still labelled as experimental and incomplete.

Configuration options related to the Sqlite3 output

Not supported and off by default.

Configuration options related to the Perl module output

Not supported and off by default.

Configuration options related to the preprocessor

Parameter Doxygen? Sphinx? Value Default Description Explanation
ENABLE_PREPROCESSING No No bool YES Enable to evaluate all encountered C-preprocessor directives We want this to be True. An option to disable in case of errors is "not an option", as glossing over dysfunctional macros would not fit the safety-critical intent of this project.
MACRO_EXPANSION Yes Yes bool NO Enable to expand macros (otherwise only conditional compilation is performed) We want this to be True by default to capture the most detail at first.
EXPAND_ONLY_PREDEF No No bool NO Enable to expand only macros listed in PREDIFINED and EXPAND_AS_DEFINED Setting PREDIFINED and EXPAND_AS_DEFINED is rather convoluted and not really applicable to an unknown general code base. However, in terms of causing error by bad user input, this should be rather unproblematic.
SEARCH_INCLUDES No No bool YES Enable to also search files in the INCLUDE_PATH, when an #include is found We do not use INCLUDE_PATH.
INCLUDE_PATH No No Path None Separate (non-recursive) path for include files that is not within the input files We want to operate on a "one directory per project"-basis and the user likely has no additional headers for an arbitrary projekt that can not simply be included in the project's main directory.
INCLUDE_FILE_PATTERNS No No - - List of patterns (like *.h, *.hpp, etc.) to classify files within INCLUDE_PATH as relevant (uses FILE_PATTERNS if left empty) We do not use INCLUDE_PATH.
PREDEFINED No No - - List of macro names with definitions to be specified before the preprocessor is started (only if EXPAND_ONLY_PREDEF enabled) Setting PREDIFINED and EXPAND_AS_DEFINED is rather convoluted and not really applicable to an unknown general code base. However, in terms of causing error by bad user input, this should be rather unproblematic.
EXPAND_AS_DEFINED No No - - List of macros to be specified with the definitions found in the sources (only if EXPAND_ONLY_PREDEF enabled) Setting PREDIFINED and EXPAND_AS_DEFINED is rather convoluted and not really applicable to an unknown general code base. However, in terms of causing error by bad user input, this should be rather unproblematic.
SKIP_FUNCTION_MACROS Yes Yes? bool YES Enable to remove all references to function-like macros (one-liner, all upper-case, not semicolon at end) (mostly used for boiler-plate and could confuse parser) Option for user to disable should exist, but False should not be default with it being error-prone.

Configuration options related to external references

The whole concept is not really applicable to our approach of generating documentation for any previously unknown software project.

Configuration options related to diagram generator tools

Parameter Doxygen? Sphinx? Value Default Description Explanation
HIDE_UNDOC_RELATIONS No No bool NO Enable to hide relations to undocumented members in inheritance/collaboration graphs We want this to be False as long as generating graphs is enabled, because the graphs are especially helpful when documentation is lacking.
HAVE_DOT No No bool NO Enable to search for the dot tool (https://www.graphviz.org/) in the system's path We want this to be True, as we assume it is added to the system path when installing it.
DOT_NUM_THREADS No No int 0 Specify number of threads doxygen/dot is allowed to use for graph generation We want this set to 0 to automatically determine the number of threads based on processor cores.
DOT_COMMON_ATTR No* No* - - Define various attributes fro the generated dot graphs (see https://graphviz.org/doc/info/attrs.html) The format is too complicated/convoluted for an unknowing user. We may want to offer an option to change the font used (i. e. corporate identity reasons)
DOT_EDGE_ATTR No* No* - - Define various attributes fro the generated dot graphs regarding graph edges (see https://graphviz.org/doc/info/arrows.html) The format is too complicated/convoluted for an unknowing user. We may want to offer an option to change the font used (i. e. corporate identity reasons)
DOT_NODE_ATTR No* No* - - Define various attributes fro the generated dot graphs regarding graph nodes (see https://www.graphviz.org/doc/info/shapes.html) The format is too complicated/convoluted for an unknowing user. We may want to offer an option to change the font used (i. e. corporate identity reasons)
DOT_FONTPATH Yes* Yes* Path None Path to a custom font to use in dot graphs (font still has to be specified in attributes) Could be used as an "override option", but likely irrelevant until regular font option is implemented.
CLASS_GRAPH No* No* bool* YES Enable to generate inheritance graphs for each class from source code, utilizing the graphviz dot tool For simplicity, we want all dot graphs enabled by default and prefer an option to disable all at once. Simplifies this toa boolean decision.
COLLABORATION_GRAPH No* No* bool YES Enable to generate collaboration graphs (direct and indirect implementation dependencies) for each class from source code, utilizing the graphviz dot tool For simplicity, we want all dot graphs enabled by default and prefer an option to disable all at once.
GROUP_GRAPHS No* No* bool YES Enable to generate group graphs from source code, utilizing the graphviz dot tool For simplicity, we want all dot graphs enabled by default and prefer an option to disable all at once.
UML_LOOK Yes Yes bool NO Enable to make inheritance/collaboration diagrams look more like UML class diagrams We want this to be True by default.
UML_LIMIT_NUM_FIELDS Yes Yes int 10 When UML_LOOK is enabled, specify the max. number of field/methods (1-100, 0 for no limit) We may want to specify a higher limit (50?). No limit seems like a bad idea.
DOT_UML_DETAILS Yes Yes str NO When set to "YES", types and arguments are included in UML graphs,set to "NO" they are omitted and set to "NONE", no fields with class member information are generated No should stay the default, but we may change the options to something less "pseudo boolean".
DOT_WRAP_THRESHOLD No No int 17 Number of characters before automatic linebreaks in dot graphs We may want to slightly raise this limit (20?). Could also be raised when DOT_UML_DETAILS is enabled.
TEMPLATE_RELATIONS Yes Yes bool NO Enable to include template/instance-relations in class/collaboration graphs We want this to be True by default.
INCLUDE_GRAPH No* No* bool YES Enable to generate include graphs for each header file from source code, utilizing the graphviz dot tool For simplicity, we want all dot graphs enabled by default and prefer an option to disable all at once.
INCLUDED_BY_GRAPH No* No* bool YES Enable to generate included-by graphs for each header file from source code, utilizing the graphviz dot tool For simplicity, we want all dot graphs enabled by default and prefer an option to disable all at once.
CALL_GRAPH No* No* bool NO Enable to generate call graphs for each function from source code, utilizing the graphviz dot tool For simplicity, we want all dot graphs enabled by default and prefer an option to disable all at once.
CALLER_GRAPH No* No* bool NO Enable to generate caller graphs for each class from source code, utilizing the graphviz dot tool For simplicity, we want all dot graphs enabled by default and prefer an option to disable all at once.
GRAPHICAL_HIERARCHY No* No* bool YES Enable to generate a graphical class hierarchy from source code, utilizing the graphviz dot tool For simplicity, we want all dot graphs enabled by default and prefer an option to disable all at once.
DIRECTORY_GRAPH No* No* bool YES Enable to generate a directory graph from source code, utilizing the graphviz dot tool For simplicity, we want all dot graphs enabled by default and prefer an option to disable all at once.
DIR_GRAPH_MAX_DEPTH No No int 1 Set the maximum depth for the directory graph (1-25) We want this to always be set to the maximum value of 25. This might be a ridiculous hierarchy depth, but if any project goes this far, it would be desirable to document it.
DOT_IMAGE_FORMAT Yes Yes str png Set the image format of all graphs generated by doxygen/dot We want this to be svg by default. The user may want the option to generate rasterized images.
INTERACTIVE_SVG No No bool YES Enable graphs to be interactive (interlinked) when DOT_IMAGE_FORMAT is set to svg No real reason to disable this, as the svg files themselves do not contain the links/interactivity.
DOT_PATH No No? (may behave differently) Path None Path to the graphviz dot tool executable (defaults to system path if left blank) We want to ensure that DOT is added to the system path when installing it. Manually setting it will not be necessary.
DOTFILE_DIRS No No list[Path] None Path to additional dot files to be included Not really in line with out purpose, so not necessary.
DIA_PATH No No Path None Path to the graphviz dia tool executable (defaults to system path if left blank) Not as relevant as the dot tool, but should be installed and added to path along with dot when installing graphviz.
DIAFILE_DIRS No No Path None Path to additional dia files to be included Not really in line with out purpose, so not necessary (and more niche than dot).
PLANTUML_JAR_PATH No? No? Path None Path to the plantuml JAR file (leaving blank equals not using plantuml) plantuml seems to not allow being added to the system path. We could technically offer an option to include plantuml, but this would also require Java additionally and seems somewhat niche, as its output requires actual instructions in the documentation. Also, at least UML class diagrams are already available by using dot and enabling UML-Look.
PLANTUML_CFG_FILE No? No? Path None Path to the plantuml config file
PLANTUML_INCLUDE_PATH No No Path None Path to additional plantuml files to be included
DOT_GRAPH_MAX_NODES No No int 50 Specify maximum number of nodes in a dot graph (1-10000) We want this to be 1000, because it seems like a fittingly large arbitrary value. :)
MAX_DOT_GRAPH_DEPTH No No int 0 Specify max. number of nodes on a path originating from the root not (0-1000, 0 for no limit) DOT_GRAPH_MAX_NODES should be sufficient as a limit.
DOT_MULTI_TARGETS No No bool NO Enable to generate multiple dot graphs at once We want this to be True, as we do not plan to support older graphviz versions.
GENERATE_LEGEND No No bool YES Enable to generate a legend page explaining the generated graphs in detail No real reason to disable this.
DOT_CLEANUP Yes Yes bool YES Enable to delete temporary intermediate dot/msc files after generating graphs Will be enabled by default, UNLESS we find a way to get further use out of the immediate files.
MSCGEN_TOOL No No str? None Specify external tool to use for generating message sequence charts (uses internal tool otherwise) Doxygen-internal tool should be sufficient.
MSCFILE_DIRS No No Path None Path to additional msc files to be inlcuded