<!-- Generated with Stardoc: http://skydoc.bazel.build -->

Doxygen rule for Bazel.

<a id="TransitiveSourcesInfo"></a>

## TransitiveSourcesInfo

<pre>
load("@rules_doxygen//doxygen:doxygen.bzl", "TransitiveSourcesInfo")

TransitiveSourcesInfo(<a href="#TransitiveSourcesInfo-srcs">srcs</a>)
</pre>

A provider to collect source files transitively from the target and its dependencies

**FIELDS**

| Name  | Description |
| :------------- | :------------- |
| <a id="TransitiveSourcesInfo-srcs"></a>srcs |  depset of source files collected from the target and its dependencies    |


<a id="doxygen"></a>

## doxygen

<pre>
load("@doxygen//:doxygen.bzl", "doxygen")

doxygen(<a href="#doxygen-name">name</a>, <a href="#doxygen-srcs">srcs</a>, <a href="#doxygen-deps">deps</a>, <a href="#doxygen-executable">executable</a>, <a href="#doxygen-dot_executable">dot_executable</a>, <a href="#doxygen-configurations">configurations</a>, <a href="#doxygen-doxyfile_prefix">doxyfile_prefix</a>,
        <a href="#doxygen-doxyfile_template">doxyfile_template</a>, <a href="#doxygen-doxygen_extra_args">doxygen_extra_args</a>, <a href="#doxygen-use_default_shell_env">use_default_shell_env</a>, <a href="#doxygen-env">env</a>, <a href="#doxygen-tools">tools</a>, <a href="#doxygen-outs">outs</a>,
        <a href="#doxygen-doxyfile_encoding">doxyfile_encoding</a>, <a href="#doxygen-project_name">project_name</a>, <a href="#doxygen-project_number">project_number</a>, <a href="#doxygen-project_brief">project_brief</a>, <a href="#doxygen-project_logo">project_logo</a>, <a href="#doxygen-project_icon">project_icon</a>,
        <a href="#doxygen-create_subdirs">create_subdirs</a>, <a href="#doxygen-create_subdirs_level">create_subdirs_level</a>, <a href="#doxygen-allow_unicode_names">allow_unicode_names</a>, <a href="#doxygen-output_language">output_language</a>, <a href="#doxygen-brief_member_desc">brief_member_desc</a>,
        <a href="#doxygen-repeat_brief">repeat_brief</a>, <a href="#doxygen-abbreviate_brief">abbreviate_brief</a>, <a href="#doxygen-always_detailed_sec">always_detailed_sec</a>, <a href="#doxygen-inline_inherited_memb">inline_inherited_memb</a>, <a href="#doxygen-full_path_names">full_path_names</a>,
        <a href="#doxygen-strip_from_path">strip_from_path</a>, <a href="#doxygen-strip_from_inc_path">strip_from_inc_path</a>, <a href="#doxygen-short_names">short_names</a>, <a href="#doxygen-javadoc_autobrief">javadoc_autobrief</a>, <a href="#doxygen-javadoc_banner">javadoc_banner</a>,
        <a href="#doxygen-qt_autobrief">qt_autobrief</a>, <a href="#doxygen-multiline_cpp_is_brief">multiline_cpp_is_brief</a>, <a href="#doxygen-python_docstring">python_docstring</a>, <a href="#doxygen-inherit_docs">inherit_docs</a>, <a href="#doxygen-separate_member_pages">separate_member_pages</a>,
        <a href="#doxygen-tab_size">tab_size</a>, <a href="#doxygen-aliases">aliases</a>, <a href="#doxygen-optimize_output_for_c">optimize_output_for_c</a>, <a href="#doxygen-optimize_output_java">optimize_output_java</a>, <a href="#doxygen-optimize_for_fortran">optimize_for_fortran</a>,
        <a href="#doxygen-optimize_output_vhdl">optimize_output_vhdl</a>, <a href="#doxygen-optimize_output_slice">optimize_output_slice</a>, <a href="#doxygen-extension_mapping">extension_mapping</a>, <a href="#doxygen-markdown_support">markdown_support</a>,
        <a href="#doxygen-markdown_strict">markdown_strict</a>, <a href="#doxygen-toc_include_headings">toc_include_headings</a>, <a href="#doxygen-markdown_id_style">markdown_id_style</a>, <a href="#doxygen-autolink_support">autolink_support</a>,
        <a href="#doxygen-autolink_ignore_words">autolink_ignore_words</a>, <a href="#doxygen-builtin_stl_support">builtin_stl_support</a>, <a href="#doxygen-cpp_cli_support">cpp_cli_support</a>, <a href="#doxygen-sip_support">sip_support</a>,
        <a href="#doxygen-idl_property_support">idl_property_support</a>, <a href="#doxygen-distribute_group_doc">distribute_group_doc</a>, <a href="#doxygen-group_nested_compounds">group_nested_compounds</a>, <a href="#doxygen-subgrouping">subgrouping</a>,
        <a href="#doxygen-inline_grouped_classes">inline_grouped_classes</a>, <a href="#doxygen-inline_simple_structs">inline_simple_structs</a>, <a href="#doxygen-typedef_hides_struct">typedef_hides_struct</a>, <a href="#doxygen-lookup_cache_size">lookup_cache_size</a>,
        <a href="#doxygen-num_proc_threads">num_proc_threads</a>, <a href="#doxygen-timestamp">timestamp</a>, <a href="#doxygen-extract_all">extract_all</a>, <a href="#doxygen-extract_private">extract_private</a>, <a href="#doxygen-extract_priv_virtual">extract_priv_virtual</a>,
        <a href="#doxygen-extract_package">extract_package</a>, <a href="#doxygen-extract_static">extract_static</a>, <a href="#doxygen-extract_local_classes">extract_local_classes</a>, <a href="#doxygen-extract_local_methods">extract_local_methods</a>,
        <a href="#doxygen-extract_anon_nspaces">extract_anon_nspaces</a>, <a href="#doxygen-resolve_unnamed_params">resolve_unnamed_params</a>, <a href="#doxygen-hide_undoc_members">hide_undoc_members</a>, <a href="#doxygen-hide_undoc_classes">hide_undoc_classes</a>,
        <a href="#doxygen-hide_undoc_namespaces">hide_undoc_namespaces</a>, <a href="#doxygen-hide_friend_compounds">hide_friend_compounds</a>, <a href="#doxygen-hide_in_body_docs">hide_in_body_docs</a>, <a href="#doxygen-internal_docs">internal_docs</a>,
        <a href="#doxygen-case_sense_names">case_sense_names</a>, <a href="#doxygen-hide_scope_names">hide_scope_names</a>, <a href="#doxygen-hide_compound_reference">hide_compound_reference</a>, <a href="#doxygen-show_headerfile">show_headerfile</a>,
        <a href="#doxygen-show_include_files">show_include_files</a>, <a href="#doxygen-show_grouped_memb_inc">show_grouped_memb_inc</a>, <a href="#doxygen-force_local_includes">force_local_includes</a>, <a href="#doxygen-inline_info">inline_info</a>,
        <a href="#doxygen-sort_member_docs">sort_member_docs</a>, <a href="#doxygen-sort_brief_docs">sort_brief_docs</a>, <a href="#doxygen-sort_members_ctors_1st">sort_members_ctors_1st</a>, <a href="#doxygen-sort_group_names">sort_group_names</a>,
        <a href="#doxygen-sort_by_scope_name">sort_by_scope_name</a>, <a href="#doxygen-strict_proto_matching">strict_proto_matching</a>, <a href="#doxygen-generate_todolist">generate_todolist</a>, <a href="#doxygen-generate_testlist">generate_testlist</a>,
        <a href="#doxygen-generate_buglist">generate_buglist</a>, <a href="#doxygen-generate_deprecatedlist">generate_deprecatedlist</a>, <a href="#doxygen-generate_requirements">generate_requirements</a>, <a href="#doxygen-req_traceability_info">req_traceability_info</a>,
        <a href="#doxygen-enabled_sections">enabled_sections</a>, <a href="#doxygen-max_initializer_lines">max_initializer_lines</a>, <a href="#doxygen-show_used_files">show_used_files</a>, <a href="#doxygen-show_files">show_files</a>, <a href="#doxygen-show_namespaces">show_namespaces</a>,
        <a href="#doxygen-file_version_filter">file_version_filter</a>, <a href="#doxygen-layout_file">layout_file</a>, <a href="#doxygen-cite_bib_files">cite_bib_files</a>, <a href="#doxygen-external_tool_path">external_tool_path</a>, <a href="#doxygen-quiet">quiet</a>, <a href="#doxygen-warnings">warnings</a>,
        <a href="#doxygen-warn_if_undocumented">warn_if_undocumented</a>, <a href="#doxygen-warn_if_doc_error">warn_if_doc_error</a>, <a href="#doxygen-warn_if_incomplete_doc">warn_if_incomplete_doc</a>, <a href="#doxygen-warn_no_paramdoc">warn_no_paramdoc</a>,
        <a href="#doxygen-warn_if_undoc_enum_val">warn_if_undoc_enum_val</a>, <a href="#doxygen-warn_layout_file">warn_layout_file</a>, <a href="#doxygen-warn_as_error">warn_as_error</a>, <a href="#doxygen-warn_format">warn_format</a>, <a href="#doxygen-warn_line_format">warn_line_format</a>,
        <a href="#doxygen-warn_logfile">warn_logfile</a>, <a href="#doxygen-input">input</a>, <a href="#doxygen-input_encoding">input_encoding</a>, <a href="#doxygen-input_file_encoding">input_file_encoding</a>, <a href="#doxygen-file_patterns">file_patterns</a>, <a href="#doxygen-recursive">recursive</a>, <a href="#doxygen-exclude">exclude</a>,
        <a href="#doxygen-exclude_symlinks">exclude_symlinks</a>, <a href="#doxygen-exclude_patterns">exclude_patterns</a>, <a href="#doxygen-exclude_symbols">exclude_symbols</a>, <a href="#doxygen-example_path">example_path</a>, <a href="#doxygen-example_patterns">example_patterns</a>,
        <a href="#doxygen-example_recursive">example_recursive</a>, <a href="#doxygen-image_path">image_path</a>, <a href="#doxygen-input_filter">input_filter</a>, <a href="#doxygen-filter_patterns">filter_patterns</a>, <a href="#doxygen-filter_source_files">filter_source_files</a>,
        <a href="#doxygen-filter_source_patterns">filter_source_patterns</a>, <a href="#doxygen-use_mdfile_as_mainpage">use_mdfile_as_mainpage</a>, <a href="#doxygen-implicit_dir_docs">implicit_dir_docs</a>, <a href="#doxygen-fortran_comment_after">fortran_comment_after</a>,
        <a href="#doxygen-source_browser">source_browser</a>, <a href="#doxygen-inline_sources">inline_sources</a>, <a href="#doxygen-strip_code_comments">strip_code_comments</a>, <a href="#doxygen-referenced_by_relation">referenced_by_relation</a>,
        <a href="#doxygen-references_relation">references_relation</a>, <a href="#doxygen-references_link_source">references_link_source</a>, <a href="#doxygen-source_tooltips">source_tooltips</a>, <a href="#doxygen-use_htags">use_htags</a>, <a href="#doxygen-verbatim_headers">verbatim_headers</a>,
        <a href="#doxygen-clang_assisted_parsing">clang_assisted_parsing</a>, <a href="#doxygen-clang_add_inc_paths">clang_add_inc_paths</a>, <a href="#doxygen-clang_options">clang_options</a>, <a href="#doxygen-clang_database_path">clang_database_path</a>,
        <a href="#doxygen-alphabetical_index">alphabetical_index</a>, <a href="#doxygen-ignore_prefix">ignore_prefix</a>, <a href="#doxygen-generate_html">generate_html</a>, <a href="#doxygen-html_output">html_output</a>, <a href="#doxygen-html_file_extension">html_file_extension</a>,
        <a href="#doxygen-html_header">html_header</a>, <a href="#doxygen-html_footer">html_footer</a>, <a href="#doxygen-html_stylesheet">html_stylesheet</a>, <a href="#doxygen-html_extra_stylesheet">html_extra_stylesheet</a>, <a href="#doxygen-html_extra_files">html_extra_files</a>,
        <a href="#doxygen-html_colorstyle">html_colorstyle</a>, <a href="#doxygen-html_colorstyle_hue">html_colorstyle_hue</a>, <a href="#doxygen-html_colorstyle_sat">html_colorstyle_sat</a>, <a href="#doxygen-html_colorstyle_gamma">html_colorstyle_gamma</a>,
        <a href="#doxygen-html_dynamic_menus">html_dynamic_menus</a>, <a href="#doxygen-html_dynamic_sections">html_dynamic_sections</a>, <a href="#doxygen-html_code_folding">html_code_folding</a>, <a href="#doxygen-html_copy_clipboard">html_copy_clipboard</a>,
        <a href="#doxygen-html_project_cookie">html_project_cookie</a>, <a href="#doxygen-html_index_num_entries">html_index_num_entries</a>, <a href="#doxygen-generate_docset">generate_docset</a>, <a href="#doxygen-docset_feedname">docset_feedname</a>, <a href="#doxygen-docset_feedurl">docset_feedurl</a>,
        <a href="#doxygen-docset_bundle_id">docset_bundle_id</a>, <a href="#doxygen-docset_publisher_id">docset_publisher_id</a>, <a href="#doxygen-docset_publisher_name">docset_publisher_name</a>, <a href="#doxygen-generate_htmlhelp">generate_htmlhelp</a>, <a href="#doxygen-chm_file">chm_file</a>,
        <a href="#doxygen-hhc_location">hhc_location</a>, <a href="#doxygen-generate_chi">generate_chi</a>, <a href="#doxygen-chm_index_encoding">chm_index_encoding</a>, <a href="#doxygen-binary_toc">binary_toc</a>, <a href="#doxygen-toc_expand">toc_expand</a>, <a href="#doxygen-sitemap_url">sitemap_url</a>,
        <a href="#doxygen-generate_qhp">generate_qhp</a>, <a href="#doxygen-qch_file">qch_file</a>, <a href="#doxygen-qhp_namespace">qhp_namespace</a>, <a href="#doxygen-qhp_virtual_folder">qhp_virtual_folder</a>, <a href="#doxygen-qhp_cust_filter_name">qhp_cust_filter_name</a>,
        <a href="#doxygen-qhp_cust_filter_attrs">qhp_cust_filter_attrs</a>, <a href="#doxygen-qhp_sect_filter_attrs">qhp_sect_filter_attrs</a>, <a href="#doxygen-qhg_location">qhg_location</a>, <a href="#doxygen-generate_eclipsehelp">generate_eclipsehelp</a>,
        <a href="#doxygen-eclipse_doc_id">eclipse_doc_id</a>, <a href="#doxygen-disable_index">disable_index</a>, <a href="#doxygen-generate_treeview">generate_treeview</a>, <a href="#doxygen-page_outline_panel">page_outline_panel</a>, <a href="#doxygen-full_sidebar">full_sidebar</a>,
        <a href="#doxygen-enum_values_per_line">enum_values_per_line</a>, <a href="#doxygen-show_enum_values">show_enum_values</a>, <a href="#doxygen-treeview_width">treeview_width</a>, <a href="#doxygen-ext_links_in_window">ext_links_in_window</a>, <a href="#doxygen-obfuscate_emails">obfuscate_emails</a>,
        <a href="#doxygen-html_formula_format">html_formula_format</a>, <a href="#doxygen-formula_fontsize">formula_fontsize</a>, <a href="#doxygen-formula_macrofile">formula_macrofile</a>, <a href="#doxygen-use_mathjax">use_mathjax</a>, <a href="#doxygen-mathjax_version">mathjax_version</a>,
        <a href="#doxygen-mathjax_format">mathjax_format</a>, <a href="#doxygen-mathjax_relpath">mathjax_relpath</a>, <a href="#doxygen-mathjax_extensions">mathjax_extensions</a>, <a href="#doxygen-mathjax_codefile">mathjax_codefile</a>, <a href="#doxygen-searchengine">searchengine</a>,
        <a href="#doxygen-server_based_search">server_based_search</a>, <a href="#doxygen-external_search">external_search</a>, <a href="#doxygen-searchengine_url">searchengine_url</a>, <a href="#doxygen-searchdata_file">searchdata_file</a>, <a href="#doxygen-external_search_id">external_search_id</a>,
        <a href="#doxygen-extra_search_mappings">extra_search_mappings</a>, <a href="#doxygen-generate_latex">generate_latex</a>, <a href="#doxygen-latex_output">latex_output</a>, <a href="#doxygen-latex_cmd_name">latex_cmd_name</a>, <a href="#doxygen-makeindex_cmd_name">makeindex_cmd_name</a>,
        <a href="#doxygen-latex_makeindex_cmd">latex_makeindex_cmd</a>, <a href="#doxygen-compact_latex">compact_latex</a>, <a href="#doxygen-paper_type">paper_type</a>, <a href="#doxygen-extra_packages">extra_packages</a>, <a href="#doxygen-latex_header">latex_header</a>, <a href="#doxygen-latex_footer">latex_footer</a>,
        <a href="#doxygen-latex_extra_stylesheet">latex_extra_stylesheet</a>, <a href="#doxygen-latex_extra_files">latex_extra_files</a>, <a href="#doxygen-pdf_hyperlinks">pdf_hyperlinks</a>, <a href="#doxygen-use_pdflatex">use_pdflatex</a>, <a href="#doxygen-latex_batchmode">latex_batchmode</a>,
        <a href="#doxygen-latex_hide_indices">latex_hide_indices</a>, <a href="#doxygen-latex_bib_style">latex_bib_style</a>, <a href="#doxygen-latex_emoji_directory">latex_emoji_directory</a>, <a href="#doxygen-generate_rtf">generate_rtf</a>, <a href="#doxygen-rtf_output">rtf_output</a>,
        <a href="#doxygen-compact_rtf">compact_rtf</a>, <a href="#doxygen-rtf_hyperlinks">rtf_hyperlinks</a>, <a href="#doxygen-rtf_stylesheet_file">rtf_stylesheet_file</a>, <a href="#doxygen-rtf_extensions_file">rtf_extensions_file</a>, <a href="#doxygen-rtf_extra_files">rtf_extra_files</a>,
        <a href="#doxygen-generate_man">generate_man</a>, <a href="#doxygen-man_output">man_output</a>, <a href="#doxygen-man_extension">man_extension</a>, <a href="#doxygen-man_subdir">man_subdir</a>, <a href="#doxygen-man_links">man_links</a>, <a href="#doxygen-generate_xml">generate_xml</a>, <a href="#doxygen-xml_output">xml_output</a>,
        <a href="#doxygen-xml_programlisting">xml_programlisting</a>, <a href="#doxygen-xml_ns_memb_file_scope">xml_ns_memb_file_scope</a>, <a href="#doxygen-generate_docbook">generate_docbook</a>, <a href="#doxygen-docbook_output">docbook_output</a>,
        <a href="#doxygen-generate_autogen_def">generate_autogen_def</a>, <a href="#doxygen-generate_sqlite3">generate_sqlite3</a>, <a href="#doxygen-sqlite3_output">sqlite3_output</a>, <a href="#doxygen-sqlite3_recreate_db">sqlite3_recreate_db</a>, <a href="#doxygen-generate_perlmod">generate_perlmod</a>,
        <a href="#doxygen-perlmod_latex">perlmod_latex</a>, <a href="#doxygen-perlmod_pretty">perlmod_pretty</a>, <a href="#doxygen-perlmod_makevar_prefix">perlmod_makevar_prefix</a>, <a href="#doxygen-enable_preprocessing">enable_preprocessing</a>, <a href="#doxygen-macro_expansion">macro_expansion</a>,
        <a href="#doxygen-expand_only_predef">expand_only_predef</a>, <a href="#doxygen-search_includes">search_includes</a>, <a href="#doxygen-include_path">include_path</a>, <a href="#doxygen-include_file_patterns">include_file_patterns</a>, <a href="#doxygen-predefined">predefined</a>,
        <a href="#doxygen-expand_as_defined">expand_as_defined</a>, <a href="#doxygen-skip_function_macros">skip_function_macros</a>, <a href="#doxygen-tagfiles">tagfiles</a>, <a href="#doxygen-generate_tagfile">generate_tagfile</a>, <a href="#doxygen-allexternals">allexternals</a>,
        <a href="#doxygen-external_groups">external_groups</a>, <a href="#doxygen-external_pages">external_pages</a>, <a href="#doxygen-hide_undoc_relations">hide_undoc_relations</a>, <a href="#doxygen-have_dot">have_dot</a>, <a href="#doxygen-dot_num_threads">dot_num_threads</a>,
        <a href="#doxygen-dot_common_attr">dot_common_attr</a>, <a href="#doxygen-dot_edge_attr">dot_edge_attr</a>, <a href="#doxygen-dot_node_attr">dot_node_attr</a>, <a href="#doxygen-dot_fontpath">dot_fontpath</a>, <a href="#doxygen-dot_transparent">dot_transparent</a>, <a href="#doxygen-class_graph">class_graph</a>,
        <a href="#doxygen-collaboration_graph">collaboration_graph</a>, <a href="#doxygen-group_graphs">group_graphs</a>, <a href="#doxygen-uml_look">uml_look</a>, <a href="#doxygen-uml_limit_num_fields">uml_limit_num_fields</a>, <a href="#doxygen-uml_max_edge_labels">uml_max_edge_labels</a>,
        <a href="#doxygen-dot_uml_details">dot_uml_details</a>, <a href="#doxygen-dot_wrap_threshold">dot_wrap_threshold</a>, <a href="#doxygen-template_relations">template_relations</a>, <a href="#doxygen-include_graph">include_graph</a>, <a href="#doxygen-included_by_graph">included_by_graph</a>,
        <a href="#doxygen-call_graph">call_graph</a>, <a href="#doxygen-caller_graph">caller_graph</a>, <a href="#doxygen-graphical_hierarchy">graphical_hierarchy</a>, <a href="#doxygen-directory_graph">directory_graph</a>, <a href="#doxygen-dir_graph_max_depth">dir_graph_max_depth</a>,
        <a href="#doxygen-dot_image_format">dot_image_format</a>, <a href="#doxygen-interactive_svg">interactive_svg</a>, <a href="#doxygen-dot_path">dot_path</a>, <a href="#doxygen-dotfile_dirs">dotfile_dirs</a>, <a href="#doxygen-dia_path">dia_path</a>, <a href="#doxygen-diafile_dirs">diafile_dirs</a>,
        <a href="#doxygen-plantuml_jar_path">plantuml_jar_path</a>, <a href="#doxygen-plantuml_cfg_file">plantuml_cfg_file</a>, <a href="#doxygen-plantuml_include_path">plantuml_include_path</a>, <a href="#doxygen-plantumlfile_dirs">plantumlfile_dirs</a>,
        <a href="#doxygen-dot_graph_max_nodes">dot_graph_max_nodes</a>, <a href="#doxygen-max_dot_graph_depth">max_dot_graph_depth</a>, <a href="#doxygen-dot_multi_targets">dot_multi_targets</a>, <a href="#doxygen-generate_legend">generate_legend</a>, <a href="#doxygen-dot_cleanup">dot_cleanup</a>,
        <a href="#doxygen-mscgen_tool">mscgen_tool</a>, <a href="#doxygen-mscfile_dirs">mscfile_dirs</a>, <a href="#doxygen-kwargs">**kwargs</a>)
</pre>

Generates documentation using Doxygen.

The set of attributes the macro provides is a subset of the Doxygen configuration options.
Depending on the type of the attribute, the macro will convert it to the appropriate string:

- None (default): the attribute will not be included in the Doxyfile
- bool: the value of the attribute is the string "YES" or "NO" respectively
- list: the value of the attribute is a string with the elements separated by spaces and enclosed in double quotes
- str: the value of the attribute is will be set to the string, unchanged. You may need to provide proper quoting if the value contains spaces

For the complete list of Doxygen configuration options, please refer to the [Doxygen documentation](https://www.doxygen.nl/manual/config.html).

> [!NOTE]
> If not istructed otherwise, the rule will use the Doxyfile from its default `doxygen` version.
> Any update could change some default values or add some flags which will be unrecognized by older `doxygen` versions, resulting in innocuous warnings.
> If you want to use a specific Doxyfile, just generate one with `doxygen -g` and specify it in the `doxyfile_template` attribute.

### Make variables

There are cases where you need access to information about the build environment, such as the output directory doxygen is writing to.
In such cases, you can use make variables in the parameters of the macro.
The `doxygen` rule will take care of expanding them to the appropriate values.

By default, the following make variables are available:

- `$(OUTDIR)`: The output directory where the documentation will be generated.
- All the predefined variables indicated in the [Bazel documentation](https://bazel.build/reference/be/make-variables#predefined_variables).

The former is particularly useful when `doxygen` needs to generate unusual files, such as [tag files](https://www.doxygen.nl/manual/config.html#cfg_generate_tagfile).
An example of this is shown below, where the tag file `PolyVox.tag` is stored in the `tags` output directory.

```bzl
doxygen(
    name = "doxygen",
    srcs = ["README.md"] + glob(["*.h", "*.cpp"]),
    outs = ["html", "tags"],
    generate_tagfile = "$(OUTDIR)/tags/PolyVox.tag",
)
```

> [!NOTE]
> Make sure that generated files are put in some directory and that directory is included in the `outs` attribute.

You can add your own substitutions by adding a rule that returns a TemplateVariableInfo provider in the `toolchains` attribute of the `doxygen` rule.
See [this example](../examples/substitutions/) for more details.

### Differences between `srcs` and `deps`

The `srcs` and `deps` attributes work differently and are not interchangeable.

`srcs` is a list of files that will be passed to Doxygen for documentation generation.
You can use `glob` to include a collection of multiple files.
On the other hand, if you indicate a target (e.g., `:my_genrule`), it will include all the files produced by that target.
More precisely, the files in the DefaultInfo provider the target returns.
Hence, when the documentation is generated, all rules in the `srcs` attribute **will** be built, and the files they output will be passed to Doxygen.

On the other hand, `deps` is a list of targets whose sources will be included in the documentation generation.
It will automatically include all the files in the `srcs`, `hdrs`, and `data` attributes of the target, and the same applies to all of its transitive dependencies, recursively.
Since we are only interested in the source files, the `deps` targets **will not** be built when the documentation is generated.

```bzl
# My BUILD.bazel file
load("@doxygen//:doxygen.bzl", "doxygen")
load("@rules_cc//cc:defs.bzl", "cc_library")

cc_library(
    name = "lib",
    hdrs = ["add.h", "sub.h"],
    srcs = ["add.cpp", "sub.cpp"],
)

cc_library(
    name = "main",
    srcs = ["main.cpp"],
    deps = [":lib"],
)


genrule(
    name = "section",
    outs = ["Section.md"],
    cmd = """
        echo "# Section " > $@
        echo "This is some amazing documentation with section!!  " >> $@
        echo "Incredible." >> $@
    """,
)

doxygen(
    name = "doxygen",
    project_name = "dependencies",

    # The output of the genrule will be included in the documentation.
    # The genrule will be executed when the documentation is generated.
    srcs = [
        "README.md",  # file
        ":section",  # genrule

        # WARNING: By adding this, the main target will be built
        # and only the output files `libmain.so` and `libmain.a`
        # will be passed to Doxygen, which is likely not what you want.
        # ":main"
    ],

    # The sources of the main target and its dependencies will be included.
    # No compilation will be performed, so compile error won't be reported.
    deps = [":main"],  # cc_library

    # Always starts at the root folder
    use_mdfile_as_mainpage = "dependencies/README.md",
)
```

### Excluding Bazel specific folders

Including the root directory among the input directories, which happens when a target starting with `//:` is used as a source,
may cause Bazel specific folders, such as `external`, to be explored by Doxygen.
This can slow down the documentation generation or even cause an input buffer overflow.
To avoid this, it is recommended to use the `exclude_patterns` parameter and set it to something like `["*/external/*"]`, extending it with other patterns as needed.

### Example

```bzl
# MODULE.bazel file
bazel_dep(name = "rules_doxygen", dev_dependency = True)
doxygen_extension = use_extension("@rules_doxygen//:extensions.bzl", "doxygen_extension")
use_repo(doxygen_extension, "doxygen")
```

```bzl
# BUILD.bazel file
load("@doxygen//:doxygen.bzl", "doxygen")
load("@rules_cc//cc:defs.bzl", "cc_library")

cc_library(
    name = "lib",
    srcs = ["add.cpp", "sub.cpp"],
    hdrs = ["add.h", "sub.h"],
)

cc_library(
    name = "main",
    srcs = ["main.cpp"],
    deps = [":lib"],
)

doxygen(
    name = "doxygen",
    srcs = glob([
        "*.md",
    ]),
    deps = [":main"]
    aliases = [
        "licence=@par Licence:^^",
        "verb{1}=@verbatim \\1 @endverbatim",
    ],
    optimize_output_for_c = True,
    project_brief = "Example project for doxygen",
    project_name = "example",
)
```


**PARAMETERS**


| Name  | Description | Default Value |
| :------------- | :------------- | :------------- |
| <a id="doxygen-name"></a>name |  Name for the target.   |  none |
| <a id="doxygen-srcs"></a>srcs |  List of source files to generate documentation for. Can include any file that Doxygen can parse, as well as targets that return a DefaultInfo provider (usually genrules). Since we are only considering the outputs files and not the sources, these targets **will** be built if necessary.   |  `[]` |
| <a id="doxygen-deps"></a>deps |  List of dependencies targets whose files present in the 'src', 'hdrs' and 'data' attributes will be collected to generate the documentation. Transitive dependencies are also taken into account. Since we are only considering the source files and not the outputs, these targets **will not** be built.   |  `[]` |
| <a id="doxygen-executable"></a>executable |  Label of the doxygen executable.   |  `None` |
| <a id="doxygen-dot_executable"></a>dot_executable |  Label of the doxygen executable. Make sure it is also added to the `srcs` of the macro   |  `None` |
| <a id="doxygen-configurations"></a>configurations |  List of additional configuration parameters to pass to Doxygen.   |  `None` |
| <a id="doxygen-doxyfile_prefix"></a>doxyfile_prefix |  Prefix to add to the Doxyfile path.   |  `""` |
| <a id="doxygen-doxyfile_template"></a>doxyfile_template |  The template file to use to generate the Doxyfile. The following substitutions are available:<br> - `# {{INPUT}}`: Subpackage directory in the sandbox.<br> - `# {{ADDITIONAL PARAMETERS}}`: Additional parameters given in the `configurations` attribute.<br> - `# {{OUTPUT DIRECTORY}}`: The directory provided in the `outs` attribute.<br> - `{{OUTDIR}}`: The output directory where the generated documentation will be placed.     Can be used anywhere in the Doxyfile, usually to generate additional output files, like tag files.   |  `None` |
| <a id="doxygen-doxygen_extra_args"></a>doxygen_extra_args |  Extra arguments to pass to the doxygen executable.   |  `[]` |
| <a id="doxygen-use_default_shell_env"></a>use_default_shell_env |  Whether to use the default shell environment when running doxygen.   |  `False` |
| <a id="doxygen-env"></a>env |  Additional environment variables to set when running doxygen.   |  `{}` |
| <a id="doxygen-tools"></a>tools |  List of additional tools to include in the doxygen environment. Tools are executable inputs that may have their own runfiles which are automatically made available to the action.   |  `[]` |
| <a id="doxygen-outs"></a>outs |  Output folders bazel will keep. If only the html outputs is of interest, the default value will do. otherwise, a list of folders to keep is expected (e.g. ["html", "latex"]). Note that the rule will also generate an output group for each folder in the outs list having the same name.   |  `["html"]` |
| <a id="doxygen-doxyfile_encoding"></a>doxyfile_encoding |  This tag specifies the encoding used for all characters in the configuration file that follow.   |  `None` |
| <a id="doxygen-project_name"></a>project_name |  The `project_name` tag is a single word (or a sequence of words surrounded by double-quotes, unless you are using Doxywizard) that should identify the project for which the documentation is generated.   |  `None` |
| <a id="doxygen-project_number"></a>project_number |  The `project_number` tag can be used to enter a project or revision number.   |  `None` |
| <a id="doxygen-project_brief"></a>project_brief |  Using the `project_brief` tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project.   |  `None` |
| <a id="doxygen-project_logo"></a>project_logo |  With the `project_logo` tag one can specify a logo or an icon that is included in the documentation.   |  `None` |
| <a id="doxygen-project_icon"></a>project_icon |  With the `project_icon` tag one can specify an icon that is included in the tabs when the HTML document is shown.   |  `None` |
| <a id="doxygen-create_subdirs"></a>create_subdirs |  If the `create_subdirs` tag is set to `True` then Doxygen will create up to 4096 sub-directories (in 2 levels) under the output directory of each output format and will distribute the generated files over these directories.   |  `None` |
| <a id="doxygen-create_subdirs_level"></a>create_subdirs_level |  Controls the number of sub-directories that will be created when `create_subdirs` tag is set to `True`.   |  `None` |
| <a id="doxygen-allow_unicode_names"></a>allow_unicode_names |  If the `allow_unicode_names` tag is set to `True`, Doxygen will allow non-ASCII characters to appear in the names of generated files.   |  `None` |
| <a id="doxygen-output_language"></a>output_language |  The `output_language` tag is used to specify the language in which all documentation generated by Doxygen is written.   |  `None` |
| <a id="doxygen-brief_member_desc"></a>brief_member_desc |  If the `brief_member_desc` tag is set to `True`, Doxygen will include brief member descriptions after the members that are listed in the file and class documentation (similar to Javadoc).   |  `None` |
| <a id="doxygen-repeat_brief"></a>repeat_brief |  If the `repeat_brief` tag is set to `True`, Doxygen will prepend the brief description of a member or function before the detailed description Note: If both `hide_undoc_members` and `brief_member_desc` are set to `False`, the brief descriptions will be completely suppressed.   |  `None` |
| <a id="doxygen-abbreviate_brief"></a>abbreviate_brief |  This tag implements a quasi-intelligent brief description abbreviator that is used to form the text in various listings.   |  `None` |
| <a id="doxygen-always_detailed_sec"></a>always_detailed_sec |  If the `always_detailed_sec` and `repeat_brief` tags are both set to `True` then Doxygen will generate a detailed section even if there is only a brief description.   |  `None` |
| <a id="doxygen-inline_inherited_memb"></a>inline_inherited_memb |  If the `inline_inherited_memb` tag is set to `True`, Doxygen will show all inherited members of a class in the documentation of that class as if those members were ordinary class members.   |  `None` |
| <a id="doxygen-full_path_names"></a>full_path_names |  If the `full_path_names` tag is set to `True`, Doxygen will prepend the full path before files name in the file list and in the header files.   |  `None` |
| <a id="doxygen-strip_from_path"></a>strip_from_path |  The `strip_from_path` tag can be used to strip a user-defined part of the path.   |  `None` |
| <a id="doxygen-strip_from_inc_path"></a>strip_from_inc_path |  The `strip_from_inc_path` tag can be used to strip a user-defined part of the path mentioned in the documentation of a class, which tells the reader which header file to include in order to use a class.   |  `None` |
| <a id="doxygen-short_names"></a>short_names |  If the `short_names` tag is set to `True`, Doxygen will generate much shorter (but less readable) file names.   |  `None` |
| <a id="doxygen-javadoc_autobrief"></a>javadoc_autobrief |  If the `javadoc_autobrief` tag is set to `True` then Doxygen will interpret the first line (until the first dot) of a Javadoc-style comment as the brief description.   |  `None` |
| <a id="doxygen-javadoc_banner"></a>javadoc_banner |  If the `javadoc_banner` tag is set to `True` then Doxygen will interpret a line such as /*************** as being the beginning of a Javadoc-style comment "banner".   |  `None` |
| <a id="doxygen-qt_autobrief"></a>qt_autobrief |  If the `qt_autobrief` tag is set to `True` then Doxygen will interpret the first line (until the first dot) of a Qt-style comment as the brief description.   |  `None` |
| <a id="doxygen-multiline_cpp_is_brief"></a>multiline_cpp_is_brief |  The `multiline_cpp_is_brief` tag can be set to `True` to make Doxygen treat a multi-line C++ special comment block (i.e. a block of //! or /// comments) as a brief description.   |  `None` |
| <a id="doxygen-python_docstring"></a>python_docstring |  By default Python docstrings are displayed as preformatted text and Doxygen's special commands cannot be used.   |  `None` |
| <a id="doxygen-inherit_docs"></a>inherit_docs |  If the `inherit_docs` tag is set to `True` then an undocumented member inherits the documentation from any documented member that it re-implements.   |  `None` |
| <a id="doxygen-separate_member_pages"></a>separate_member_pages |  If the `separate_member_pages` tag is set to `True` then Doxygen will produce a new page for each member.   |  `None` |
| <a id="doxygen-tab_size"></a>tab_size |  The `tab_size` tag can be used to set the number of spaces in a tab.   |  `None` |
| <a id="doxygen-aliases"></a>aliases |  This tag can be used to specify a number of aliases that act as commands in the documentation.   |  `None` |
| <a id="doxygen-optimize_output_for_c"></a>optimize_output_for_c |  Set the `optimize_output_for_c` tag to `True` if your project consists of C sources only.   |  `None` |
| <a id="doxygen-optimize_output_java"></a>optimize_output_java |  Set the `optimize_output_java` tag to `True` if your project consists of Java or Python sources only.   |  `None` |
| <a id="doxygen-optimize_for_fortran"></a>optimize_for_fortran |  Set the `optimize_for_fortran` tag to `True` if your project consists of Fortran sources.   |  `None` |
| <a id="doxygen-optimize_output_vhdl"></a>optimize_output_vhdl |  Set the `optimize_output_vhdl` tag to `True` if your project consists of VHDL sources.   |  `None` |
| <a id="doxygen-optimize_output_slice"></a>optimize_output_slice |  Set the `optimize_output_slice` tag to `True` if your project consists of Slice sources only.   |  `None` |
| <a id="doxygen-extension_mapping"></a>extension_mapping |  Doxygen selects the parser to use depending on the extension of the files it parses.   |  `None` |
| <a id="doxygen-markdown_support"></a>markdown_support |  If the `markdown_support` tag is enabled then Doxygen pre-processes all comments according to the Markdown format, which allows for more readable documentation.   |  `None` |
| <a id="doxygen-markdown_strict"></a>markdown_strict |  If the markdown_strict tag is enabled then Doxygen treats text in comments as Markdown formatted also in cases where Doxygen's native markup format conflicts with that of Markdown.   |  `None` |
| <a id="doxygen-toc_include_headings"></a>toc_include_headings |  When the `toc_include_headings` tag is set to a non-zero value, all headings up to that level are automatically included in the table of contents, even if they do not have an id attribute.   |  `None` |
| <a id="doxygen-markdown_id_style"></a>markdown_id_style |  The `markdown_id_style` tag can be used to specify the algorithm used to generate identifiers for the Markdown headings.   |  `None` |
| <a id="doxygen-autolink_support"></a>autolink_support |  When enabled Doxygen tries to link words that correspond to documented classes, or namespaces to their corresponding documentation.   |  `None` |
| <a id="doxygen-autolink_ignore_words"></a>autolink_ignore_words |  This tag specifies a list of words that, when matching the start of a word in the documentation, will suppress auto links generation, if it is enabled via autolink_support.   |  `None` |
| <a id="doxygen-builtin_stl_support"></a>builtin_stl_support |  If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to include (a tag file for) the STL sources as input, then you should set this tag to `True` in order to let Doxygen match functions declarations and definitions whose arguments contain STL classes (e.g. func(std::string); versus func(std::string) {}).   |  `None` |
| <a id="doxygen-cpp_cli_support"></a>cpp_cli_support |  If you use Microsoft's C++/CLI language, you should set this option to `True` to enable parsing support.   |  `None` |
| <a id="doxygen-sip_support"></a>sip_support |  Set the `sip_support` tag to `True` if your project consists of sip (see: https://www.riverbankcomputing.com/software) sources only.   |  `None` |
| <a id="doxygen-idl_property_support"></a>idl_property_support |  For Microsoft's IDL there are propget and propput attributes to indicate getter and setter methods for a property.   |  `None` |
| <a id="doxygen-distribute_group_doc"></a>distribute_group_doc |  If member grouping is used in the documentation and the `distribute_group_doc` tag is set to `True` then Doxygen will reuse the documentation of the first member in the group (if any) for the other members of the group.   |  `None` |
| <a id="doxygen-group_nested_compounds"></a>group_nested_compounds |  If one adds a struct or class to a group and this option is enabled, then also any nested class or struct is added to the same group.   |  `None` |
| <a id="doxygen-subgrouping"></a>subgrouping |  Set the `subgrouping` tag to `True` to allow class member groups of the same type (for instance a group of public functions) to be put as a subgroup of that type (e.g. under the Public Functions section).   |  `None` |
| <a id="doxygen-inline_grouped_classes"></a>inline_grouped_classes |  When the `inline_grouped_classes` tag is set to `True`, classes, structs and unions are shown inside the group in which they are included (e.g. using \ingroup) instead of on a separate page (for HTML and Man pages) or section (for LaTeX and RTF).   |  `None` |
| <a id="doxygen-inline_simple_structs"></a>inline_simple_structs |  When the `inline_simple_structs` tag is set to `True`, structs, classes, and unions with only public data fields or simple typedef fields will be shown inline in the documentation of the scope in which they are defined (i.e. file, namespace, or group documentation), provided this scope is documented.   |  `None` |
| <a id="doxygen-typedef_hides_struct"></a>typedef_hides_struct |  When `typedef_hides_struct` tag is enabled, a typedef of a struct, union, or enum is documented as struct, union, or enum with the name of the typedef.   |  `None` |
| <a id="doxygen-lookup_cache_size"></a>lookup_cache_size |  The size of the symbol lookup cache can be set using `lookup_cache_size`.   |  `None` |
| <a id="doxygen-num_proc_threads"></a>num_proc_threads |  The `num_proc_threads` specifies the number of threads Doxygen is allowed to use during processing.   |  `None` |
| <a id="doxygen-timestamp"></a>timestamp |  If the `timestamp` tag is set different from `False` then each generated page will contain the date or date and time when the page was generated.   |  `None` |
| <a id="doxygen-extract_all"></a>extract_all |  If the `extract_all` tag is set to `True`, Doxygen will assume all entities in documentation are documented, even if no documentation was available.   |  `None` |
| <a id="doxygen-extract_private"></a>extract_private |  If the `extract_private` tag is set to `True`, all private members of a class will be included in the documentation.   |  `None` |
| <a id="doxygen-extract_priv_virtual"></a>extract_priv_virtual |  If the `extract_priv_virtual` tag is set to `True`, documented private virtual methods of a class will be included in the documentation.   |  `None` |
| <a id="doxygen-extract_package"></a>extract_package |  If the `extract_package` tag is set to `True`, all members with package or internal scope will be included in the documentation.   |  `None` |
| <a id="doxygen-extract_static"></a>extract_static |  If the `extract_static` tag is set to `True`, all static members of a file will be included in the documentation.   |  `None` |
| <a id="doxygen-extract_local_classes"></a>extract_local_classes |  If the `extract_local_classes` tag is set to `True`, classes (and structs) defined locally in source files will be included in the documentation.   |  `None` |
| <a id="doxygen-extract_local_methods"></a>extract_local_methods |  This flag is only useful for Objective-C code.   |  `None` |
| <a id="doxygen-extract_anon_nspaces"></a>extract_anon_nspaces |  If this flag is set to `True`, the members of anonymous namespaces will be extracted and appear in the documentation as a namespace called 'anonymous_namespace{file}', where file will be replaced with the base name of the file that contains the anonymous namespace.   |  `None` |
| <a id="doxygen-resolve_unnamed_params"></a>resolve_unnamed_params |  If this flag is set to `True`, the name of an unnamed parameter in a declaration will be determined by the corresponding definition.   |  `None` |
| <a id="doxygen-hide_undoc_members"></a>hide_undoc_members |  If the `hide_undoc_members` tag is set to `True`, Doxygen will hide all undocumented members inside documented classes or files.   |  `None` |
| <a id="doxygen-hide_undoc_classes"></a>hide_undoc_classes |  If the `hide_undoc_classes` tag is set to `True`, Doxygen will hide all undocumented classes that are normally visible in the class hierarchy.   |  `None` |
| <a id="doxygen-hide_undoc_namespaces"></a>hide_undoc_namespaces |  If the hide_undoc_namespaces tag is set to YES, Doxygen will hide all undocumented namespaces that are normally visible in the namespace hierarchy.   |  `None` |
| <a id="doxygen-hide_friend_compounds"></a>hide_friend_compounds |  If the `hide_friend_compounds` tag is set to `True`, Doxygen will hide all friend declarations.   |  `None` |
| <a id="doxygen-hide_in_body_docs"></a>hide_in_body_docs |  If the `hide_in_body_docs` tag is set to `True`, Doxygen will hide any documentation blocks found inside the body of a function.   |  `None` |
| <a id="doxygen-internal_docs"></a>internal_docs |  The `internal_docs` tag determines if documentation that is typed after a \internal command is included.   |  `None` |
| <a id="doxygen-case_sense_names"></a>case_sense_names |  With the correct setting of option `case_sense_names` Doxygen will better be able to match the capabilities of the underlying filesystem.   |  `None` |
| <a id="doxygen-hide_scope_names"></a>hide_scope_names |  If the `hide_scope_names` tag is set to `False` then Doxygen will show members with their full class and namespace scopes in the documentation.   |  `None` |
| <a id="doxygen-hide_compound_reference"></a>hide_compound_reference |  If the `hide_compound_reference` tag is set to `False` (default) then Doxygen will append additional text to a page's title, such as Class Reference.   |  `None` |
| <a id="doxygen-show_headerfile"></a>show_headerfile |  If the `show_headerfile` tag is set to `True` then the documentation for a class will show which file needs to be included to use the class.   |  `None` |
| <a id="doxygen-show_include_files"></a>show_include_files |  If the `show_include_files` tag is set to `True` then Doxygen will put a list of the files that are included by a file in the documentation of that file.   |  `None` |
| <a id="doxygen-show_grouped_memb_inc"></a>show_grouped_memb_inc |  If the `show_grouped_memb_inc` tag is set to `True` then Doxygen will add for each grouped member an include statement to the documentation, telling the reader which file to include in order to use the member.   |  `None` |
| <a id="doxygen-force_local_includes"></a>force_local_includes |  If the `force_local_includes` tag is set to `True` then Doxygen will list include files with double quotes in the documentation rather than with sharp brackets.   |  `None` |
| <a id="doxygen-inline_info"></a>inline_info |  If the `inline_info` tag is set to `True` then a tag [inline] is inserted in the documentation for inline members.   |  `None` |
| <a id="doxygen-sort_member_docs"></a>sort_member_docs |  If the `sort_member_docs` tag is set to `True` then Doxygen will sort the (detailed) documentation of file and class members alphabetically by member name.   |  `None` |
| <a id="doxygen-sort_brief_docs"></a>sort_brief_docs |  If the `sort_brief_docs` tag is set to `True` then Doxygen will sort the brief descriptions of file, namespace and class members alphabetically by member name.   |  `None` |
| <a id="doxygen-sort_members_ctors_1st"></a>sort_members_ctors_1st |  If the `sort_members_ctors_1st` tag is set to `True` then Doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first.   |  `None` |
| <a id="doxygen-sort_group_names"></a>sort_group_names |  If the `sort_group_names` tag is set to `True` then Doxygen will sort the hierarchy of group names into alphabetical order.   |  `None` |
| <a id="doxygen-sort_by_scope_name"></a>sort_by_scope_name |  If the `sort_by_scope_name` tag is set to `True`, the class list will be sorted by fully-qualified names, including namespaces.   |  `None` |
| <a id="doxygen-strict_proto_matching"></a>strict_proto_matching |  If the `strict_proto_matching` option is enabled and Doxygen fails to do proper type resolution of all parameters of a function it will reject a match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match.   |  `None` |
| <a id="doxygen-generate_todolist"></a>generate_todolist |  The `generate_todolist` tag can be used to enable (YES) or disable (NO) the todo list.   |  `None` |
| <a id="doxygen-generate_testlist"></a>generate_testlist |  The `generate_testlist` tag can be used to enable (YES) or disable (NO) the test list.   |  `None` |
| <a id="doxygen-generate_buglist"></a>generate_buglist |  The `generate_buglist` tag can be used to enable (YES) or disable (NO) the bug list.   |  `None` |
| <a id="doxygen-generate_deprecatedlist"></a>generate_deprecatedlist |  The `generate_deprecatedlist` tag can be used to enable (YES) or disable (NO) the deprecated list.   |  `None` |
| <a id="doxygen-generate_requirements"></a>generate_requirements |  The `generate_requirements` tag can be used to enable (YES) or disable (NO) the requirements page   |  `None` |
| <a id="doxygen-req_traceability_info"></a>req_traceability_info |  The `req_traceability_info` tag controls if traceability information is shown on the requirements page (only relevant when using \requirement comment blocks).   |  `None` |
| <a id="doxygen-enabled_sections"></a>enabled_sections |  The `enabled_sections` tag can be used to enable conditional documentation sections, marked by \if <section_label> ... \endif and \cond <section_label> ... \endcond blocks.   |  `None` |
| <a id="doxygen-max_initializer_lines"></a>max_initializer_lines |  The `max_initializer_lines` tag determines the maximum number of lines that the initial value of a variable or macro / define can have for it to appear in the documentation.   |  `None` |
| <a id="doxygen-show_used_files"></a>show_used_files |  Set the `show_used_files` tag to `False` to disable the list of files generated at the bottom of the documentation of classes and structs.   |  `None` |
| <a id="doxygen-show_files"></a>show_files |  Set the `show_files` tag to `False` to disable the generation of the Files page.   |  `None` |
| <a id="doxygen-show_namespaces"></a>show_namespaces |  Set the `show_namespaces` tag to `False` to disable the generation of the Namespaces page.   |  `None` |
| <a id="doxygen-file_version_filter"></a>file_version_filter |  The `file_version_filter` tag can be used to specify a program or script that Doxygen should invoke to get the current version for each file (typically from the version control system).   |  `None` |
| <a id="doxygen-layout_file"></a>layout_file |  The `layout_file` tag can be used to specify a layout file which will be parsed by Doxygen.   |  `None` |
| <a id="doxygen-cite_bib_files"></a>cite_bib_files |  The `cite_bib_files` tag can be used to specify one or more bib files containing the reference definitions.   |  `None` |
| <a id="doxygen-external_tool_path"></a>external_tool_path |  The `external_tool_path` tag can be used to extend the search path (PATH environment variable) so that external tools such as latex and gs can be found.   |  `None` |
| <a id="doxygen-quiet"></a>quiet |  The `quiet` tag can be used to turn on/off the messages that are generated to standard output by Doxygen.   |  `None` |
| <a id="doxygen-warnings"></a>warnings |  The `warnings` tag can be used to turn on/off the warning messages that are generated to standard error (stderr) by Doxygen.   |  `None` |
| <a id="doxygen-warn_if_undocumented"></a>warn_if_undocumented |  If the `warn_if_undocumented` tag is set to `True` then Doxygen will generate warnings for undocumented members.   |  `None` |
| <a id="doxygen-warn_if_doc_error"></a>warn_if_doc_error |  If the `warn_if_doc_error` tag is set to `True`, Doxygen will generate warnings for potential errors in the documentation, such as documenting some parameters in a documented function twice, or documenting parameters that don't exist or using markup commands wrongly.   |  `None` |
| <a id="doxygen-warn_if_incomplete_doc"></a>warn_if_incomplete_doc |  If `warn_if_incomplete_doc` is set to `True`, Doxygen will warn about incomplete function parameter documentation.   |  `None` |
| <a id="doxygen-warn_no_paramdoc"></a>warn_no_paramdoc |  This `warn_no_paramdoc` option can be enabled to get warnings for functions that are documented, but have no documentation for their parameters or return value.   |  `None` |
| <a id="doxygen-warn_if_undoc_enum_val"></a>warn_if_undoc_enum_val |  If `warn_if_undoc_enum_val` option is set to `True`, Doxygen will warn about undocumented enumeration values.   |  `None` |
| <a id="doxygen-warn_layout_file"></a>warn_layout_file |  If warn_layout_file option is set to `True`, Doxygen will warn about issues found while parsing the user defined layout file, such as missing or wrong elements   |  `None` |
| <a id="doxygen-warn_as_error"></a>warn_as_error |  If the `warn_as_error` tag is set to `True` then Doxygen will immediately stop when a warning is encountered.   |  `None` |
| <a id="doxygen-warn_format"></a>warn_format |  The `warn_format` tag determines the format of the warning messages that Doxygen can produce.   |  `None` |
| <a id="doxygen-warn_line_format"></a>warn_line_format |  In the $text part of the `warn_format` command it is possible that a reference to a more specific place is given.   |  `None` |
| <a id="doxygen-warn_logfile"></a>warn_logfile |  The `warn_logfile` tag can be used to specify a file to which warning and error messages should be written.   |  `None` |
| <a id="doxygen-input"></a>input |  The `input` tag is used to specify the files and/or directories that contain documented source files.   |  `None` |
| <a id="doxygen-input_encoding"></a>input_encoding |  This tag can be used to specify the character encoding of the source files that Doxygen parses.   |  `None` |
| <a id="doxygen-input_file_encoding"></a>input_file_encoding |  This tag can be used to specify the character encoding of the source files that Doxygen parses The `input_file_encoding` tag can be used to specify character encoding on a per file pattern basis.   |  `None` |
| <a id="doxygen-file_patterns"></a>file_patterns |  If the value of the `input` tag contains directories, you can use the `file_patterns` tag to specify one or more wildcard patterns (like *.cpp and *.h) to filter out the source-files in the directories.   |  `None` |
| <a id="doxygen-recursive"></a>recursive |  The `recursive` tag can be used to specify whether or not subdirectories should be searched for input files as well.   |  `None` |
| <a id="doxygen-exclude"></a>exclude |  The `exclude` tag can be used to specify files and/or directories that should be excluded from the `input` source files.   |  `None` |
| <a id="doxygen-exclude_symlinks"></a>exclude_symlinks |  The `exclude_symlinks` tag can be used to select whether or not files or directories that are symbolic links (a Unix file system feature) are excluded from the input.   |  `None` |
| <a id="doxygen-exclude_patterns"></a>exclude_patterns |  If the value of the `input` tag contains directories, you can use the `exclude_patterns` tag to specify one or more wildcard patterns to exclude certain files from those directories.   |  `None` |
| <a id="doxygen-exclude_symbols"></a>exclude_symbols |  The `exclude_symbols` tag can be used to specify one or more symbol names (namespaces, classes, functions, etc.) that should be excluded from the output.   |  `None` |
| <a id="doxygen-example_path"></a>example_path |  The `example_path` tag can be used to specify one or more files or directories that contain example code fragments that are included (see the \include command).   |  `None` |
| <a id="doxygen-example_patterns"></a>example_patterns |  If the value of the `example_path` tag contains directories, you can use the `example_patterns` tag to specify one or more wildcard pattern (like *.cpp and *.h) to filter out the source-files in the directories.   |  `None` |
| <a id="doxygen-example_recursive"></a>example_recursive |  If the `example_recursive` tag is set to `True` then subdirectories will be searched for input files to be used with the \include or \dontinclude commands irrespective of the value of the `recursive` tag.   |  `None` |
| <a id="doxygen-image_path"></a>image_path |  The `image_path` tag can be used to specify one or more files or directories that contain images that are to be included in the documentation (see the \image command).   |  `None` |
| <a id="doxygen-input_filter"></a>input_filter |  The `input_filter` tag can be used to specify a program that Doxygen should invoke to filter for each input file.   |  `None` |
| <a id="doxygen-filter_patterns"></a>filter_patterns |  The `filter_patterns` tag can be used to specify filters on a per file pattern basis.   |  `None` |
| <a id="doxygen-filter_source_files"></a>filter_source_files |  If the `filter_source_files` tag is set to `True`, the input filter (if set using `input_filter`) will also be used to filter the input files that are used for producing the source files to browse (i.e. when `source_browser` is set to `True`).   |  `None` |
| <a id="doxygen-filter_source_patterns"></a>filter_source_patterns |  The `filter_source_patterns` tag can be used to specify source filters per file pattern.   |  `None` |
| <a id="doxygen-use_mdfile_as_mainpage"></a>use_mdfile_as_mainpage |  If the `use_mdfile_as_mainpage` tag refers to the name of a markdown file that is part of the input, its contents will be placed on the main page (index.html).   |  `None` |
| <a id="doxygen-implicit_dir_docs"></a>implicit_dir_docs |  If the implicit_dir_docs tag is set to `True`, any README.md file found in subdirectories of the project's root, is used as the documentation for that subdirectory, except when the README.md starts with a \dir, \page or \mainpage command.   |  `None` |
| <a id="doxygen-fortran_comment_after"></a>fortran_comment_after |  The Fortran standard specifies that for fixed formatted Fortran code all characters from position 72 are to be considered as comment.   |  `None` |
| <a id="doxygen-source_browser"></a>source_browser |  If the `source_browser` tag is set to `True` then a list of source files will be generated.   |  `None` |
| <a id="doxygen-inline_sources"></a>inline_sources |  Setting the `inline_sources` tag to `True` will include the body of functions, multi-line macros, enums or list initialized variables directly into the documentation.   |  `None` |
| <a id="doxygen-strip_code_comments"></a>strip_code_comments |  Setting the `strip_code_comments` tag to `True` will instruct Doxygen to hide any special comment blocks from generated source code fragments.   |  `None` |
| <a id="doxygen-referenced_by_relation"></a>referenced_by_relation |  If the `referenced_by_relation` tag is set to `True` then for each documented entity all documented functions referencing it will be listed.   |  `None` |
| <a id="doxygen-references_relation"></a>references_relation |  If the `references_relation` tag is set to `True` then for each documented function all documented entities called/used by that function will be listed.   |  `None` |
| <a id="doxygen-references_link_source"></a>references_link_source |  If the `references_link_source` tag is set to `True` and `source_browser` tag is set to `True` then the hyperlinks from functions in `references_relation` and `referenced_by_relation` lists will link to the source code.   |  `None` |
| <a id="doxygen-source_tooltips"></a>source_tooltips |  If `source_tooltips` is enabled (the default) then hovering a hyperlink in the source code will show a tooltip with additional information such as prototype, brief description and links to the definition and documentation.   |  `None` |
| <a id="doxygen-use_htags"></a>use_htags |  If the `use_htags` tag is set to `True` then the references to source code will point to the HTML generated by the htags(1) tool instead of Doxygen built-in source browser.   |  `None` |
| <a id="doxygen-verbatim_headers"></a>verbatim_headers |  If the `verbatim_headers` tag is set the `True` then Doxygen will generate a verbatim copy of the header file for each class for which an include is specified.   |  `None` |
| <a id="doxygen-clang_assisted_parsing"></a>clang_assisted_parsing |  If the `clang_assisted_parsing` tag is set to `True` then Doxygen will use the clang parser (see: http://clang.llvm.org/) for more accurate parsing at the cost of reduced performance.   |  `None` |
| <a id="doxygen-clang_add_inc_paths"></a>clang_add_inc_paths |  If the `clang_assisted_parsing` tag is set to `True` and the `clang_add_inc_paths` tag is set to `True` then Doxygen will add the directory of each input to the include path.   |  `None` |
| <a id="doxygen-clang_options"></a>clang_options |  If clang assisted parsing is enabled you can provide the compiler with command line options that you would normally use when invoking the compiler.   |  `None` |
| <a id="doxygen-clang_database_path"></a>clang_database_path |  If clang assisted parsing is enabled you can provide the clang parser with the path to the directory containing a file called compile_commands.json.   |  `None` |
| <a id="doxygen-alphabetical_index"></a>alphabetical_index |  If the `alphabetical_index` tag is set to `True`, an alphabetical index of all compounds will be generated.   |  `None` |
| <a id="doxygen-ignore_prefix"></a>ignore_prefix |  The `ignore_prefix` tag can be used to specify a prefix (or a list of prefixes) that should be ignored while generating the index headers.   |  `None` |
| <a id="doxygen-generate_html"></a>generate_html |  If the `generate_html` tag is set to `True`, Doxygen will generate HTML output The default value is: `True`.   |  `None` |
| <a id="doxygen-html_output"></a>html_output |  The `html_output` tag is used to specify where the HTML docs will be put.   |  `None` |
| <a id="doxygen-html_file_extension"></a>html_file_extension |  The `html_file_extension` tag can be used to specify the file extension for each generated HTML page (for example: .htm, .php, .asp).   |  `None` |
| <a id="doxygen-html_header"></a>html_header |  The `html_header` tag can be used to specify a user-defined HTML header file for each generated HTML page.   |  `None` |
| <a id="doxygen-html_footer"></a>html_footer |  The `html_footer` tag can be used to specify a user-defined HTML footer for each generated HTML page.   |  `None` |
| <a id="doxygen-html_stylesheet"></a>html_stylesheet |  The `html_stylesheet` tag can be used to specify a user-defined cascading style sheet that is used by each HTML page.   |  `None` |
| <a id="doxygen-html_extra_stylesheet"></a>html_extra_stylesheet |  The `html_extra_stylesheet` tag can be used to specify additional user-defined cascading style sheets that are included after the standard style sheets created by Doxygen.   |  `None` |
| <a id="doxygen-html_extra_files"></a>html_extra_files |  The `html_extra_files` tag can be used to specify one or more extra images or other source files which should be copied to the HTML output directory.   |  `None` |
| <a id="doxygen-html_colorstyle"></a>html_colorstyle |  The `html_colorstyle` tag can be used to specify if the generated HTML output should be rendered with a dark or light theme.   |  `None` |
| <a id="doxygen-html_colorstyle_hue"></a>html_colorstyle_hue |  The `html_colorstyle_hue` tag controls the color of the HTML output.   |  `None` |
| <a id="doxygen-html_colorstyle_sat"></a>html_colorstyle_sat |  The `html_colorstyle_sat` tag controls the purity (or saturation) of the colors in the HTML output.   |  `None` |
| <a id="doxygen-html_colorstyle_gamma"></a>html_colorstyle_gamma |  The `html_colorstyle_gamma` tag controls the gamma correction applied to the luminance component of the colors in the HTML output.   |  `None` |
| <a id="doxygen-html_dynamic_menus"></a>html_dynamic_menus |  If the `html_dynamic_menus` tag is set to `True` then the generated HTML documentation will contain a main index with vertical navigation menus that are dynamically created via JavaScript.   |  `None` |
| <a id="doxygen-html_dynamic_sections"></a>html_dynamic_sections |  If the `html_dynamic_sections` tag is set to `True` then the generated HTML documentation will contain sections that can be hidden and shown after the page has loaded.   |  `None` |
| <a id="doxygen-html_code_folding"></a>html_code_folding |  If the `html_code_folding` tag is set to `True` then classes and functions can be dynamically folded and expanded in the generated HTML source code.   |  `None` |
| <a id="doxygen-html_copy_clipboard"></a>html_copy_clipboard |  If the `html_copy_clipboard` tag is set to `True` then Doxygen will show an icon in the top right corner of code and text fragments that allows the user to copy its content to the clipboard.   |  `None` |
| <a id="doxygen-html_project_cookie"></a>html_project_cookie |  Doxygen stores a couple of settings persistently in the browser (via e.g. cookies).   |  `None` |
| <a id="doxygen-html_index_num_entries"></a>html_index_num_entries |  With `html_index_num_entries` one can control the preferred number of entries shown in the various tree structured indices initially; the user can expand and collapse entries dynamically later on.   |  `None` |
| <a id="doxygen-generate_docset"></a>generate_docset |  If the `generate_docset` tag is set to `True`, additional index files will be generated that can be used as input for Apple's Xcode 3 integrated development environment (see: https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard).   |  `None` |
| <a id="doxygen-docset_feedname"></a>docset_feedname |  This tag determines the name of the docset feed.   |  `None` |
| <a id="doxygen-docset_feedurl"></a>docset_feedurl |  This tag determines the URL of the docset feed.   |  `None` |
| <a id="doxygen-docset_bundle_id"></a>docset_bundle_id |  This tag specifies a string that should uniquely identify the documentation set bundle.   |  `None` |
| <a id="doxygen-docset_publisher_id"></a>docset_publisher_id |  The `docset_publisher_id` tag specifies a string that should uniquely identify the documentation publisher.   |  `None` |
| <a id="doxygen-docset_publisher_name"></a>docset_publisher_name |  The `docset_publisher_name` tag identifies the documentation publisher.   |  `None` |
| <a id="doxygen-generate_htmlhelp"></a>generate_htmlhelp |  If the `generate_htmlhelp` tag is set to `True` then Doxygen generates three additional HTML index files: index.hhp, index.hhc, and index.hhk.   |  `None` |
| <a id="doxygen-chm_file"></a>chm_file |  The `chm_file` tag can be used to specify the file name of the resulting .chm file.   |  `None` |
| <a id="doxygen-hhc_location"></a>hhc_location |  The `hhc_location` tag can be used to specify the location (absolute path including file name) of the HTML help compiler (hhc.exe).   |  `None` |
| <a id="doxygen-generate_chi"></a>generate_chi |  The `generate_chi` flag controls if a separate .chi index file is generated (YES) or that it should be included in the main .chm file (NO).   |  `None` |
| <a id="doxygen-chm_index_encoding"></a>chm_index_encoding |  The `chm_index_encoding` is used to encode HtmlHelp index (hhk), content (hhc) and project file content.   |  `None` |
| <a id="doxygen-binary_toc"></a>binary_toc |  The `binary_toc` flag controls whether a binary table of contents is generated (YES) or a normal table of contents (NO) in the .chm file.   |  `None` |
| <a id="doxygen-toc_expand"></a>toc_expand |  The `toc_expand` flag can be set to `True` to add extra items for group members to the table of contents of the HTML help documentation and to the tree view.   |  `None` |
| <a id="doxygen-sitemap_url"></a>sitemap_url |  The `sitemap_url` tag is used to specify the full URL of the place where the generated documentation will be placed on the server by the user during the deployment of the documentation.   |  `None` |
| <a id="doxygen-generate_qhp"></a>generate_qhp |  If the `generate_qhp` tag is set to `True` and both `qhp_namespace` and `qhp_virtual_folder` are set, an additional index file will be generated that can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated HTML documentation.   |  `None` |
| <a id="doxygen-qch_file"></a>qch_file |  If the `qhg_location` tag is specified, the `qch_file` tag can be used to specify the file name of the resulting .qch file.   |  `None` |
| <a id="doxygen-qhp_namespace"></a>qhp_namespace |  The `qhp_namespace` tag specifies the namespace to use when generating Qt Help Project output.   |  `None` |
| <a id="doxygen-qhp_virtual_folder"></a>qhp_virtual_folder |  The `qhp_virtual_folder` tag specifies the namespace to use when generating Qt Help Project output.   |  `None` |
| <a id="doxygen-qhp_cust_filter_name"></a>qhp_cust_filter_name |  If the `qhp_cust_filter_name` tag is set, it specifies the name of a custom filter to add.   |  `None` |
| <a id="doxygen-qhp_cust_filter_attrs"></a>qhp_cust_filter_attrs |  The `qhp_cust_filter_attrs` tag specifies the list of the attributes of the custom filter to add.   |  `None` |
| <a id="doxygen-qhp_sect_filter_attrs"></a>qhp_sect_filter_attrs |  The `qhp_sect_filter_attrs` tag specifies the list of the attributes this project's filter section matches.   |  `None` |
| <a id="doxygen-qhg_location"></a>qhg_location |  The `qhg_location` tag can be used to specify the location (absolute path including file name) of Qt's qhelpgenerator.   |  `None` |
| <a id="doxygen-generate_eclipsehelp"></a>generate_eclipsehelp |  If the `generate_eclipsehelp` tag is set to `True`, additional index files will be generated, together with the HTML files, they form an Eclipse help plugin.   |  `None` |
| <a id="doxygen-eclipse_doc_id"></a>eclipse_doc_id |  A unique identifier for the Eclipse help plugin.   |  `None` |
| <a id="doxygen-disable_index"></a>disable_index |  If you want full control over the layout of the generated HTML pages it might be necessary to disable the index and replace it with your own.   |  `None` |
| <a id="doxygen-generate_treeview"></a>generate_treeview |  The `generate_treeview` tag is used to specify whether a tree-like index structure should be generated to display hierarchical information.   |  `None` |
| <a id="doxygen-page_outline_panel"></a>page_outline_panel |  When `generate_treeview` is set to YES, the `page_outline_panel` option determines if an additional navigation panel is shown at the right hand side of the screen, displaying an outline of the contents of the main page, similar to e.g. https://developer.android.com/reference.   |  `None` |
| <a id="doxygen-full_sidebar"></a>full_sidebar |  When `generate_treeview` is set to `True`, the `full_sidebar` option determines if the side bar is limited to only the treeview area (value `False`) or if it should extend to the full height of the window (value `True`).   |  `None` |
| <a id="doxygen-enum_values_per_line"></a>enum_values_per_line |  The `enum_values_per_line` tag can be used to set the number of enum values that Doxygen will group on one line in the generated HTML documentation.   |  `None` |
| <a id="doxygen-show_enum_values"></a>show_enum_values |  When the `show_enum_values` tag is set doxygen will show the specified enumeration values besides the enumeration mnemonics.   |  `None` |
| <a id="doxygen-treeview_width"></a>treeview_width |  If the treeview is enabled (see `generate_treeview`) then this tag can be used to set the initial width (in pixels) of the frame in which the tree is shown.   |  `None` |
| <a id="doxygen-ext_links_in_window"></a>ext_links_in_window |  If the `ext_links_in_window` option is set to `True`, Doxygen will open links to external symbols imported via tag files in a separate window.   |  `None` |
| <a id="doxygen-obfuscate_emails"></a>obfuscate_emails |  If the `obfuscate_emails` tag is set to `True`, Doxygen will obfuscate email addresses.   |  `None` |
| <a id="doxygen-html_formula_format"></a>html_formula_format |  If the `html_formula_format` option is set to svg, Doxygen will use the pdf2svg tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see https://inkscape.org) to generate formulas as SVG images instead of PNGs for the HTML output.   |  `None` |
| <a id="doxygen-formula_fontsize"></a>formula_fontsize |  Use this tag to change the font size of LaTeX formulas included as images in the HTML documentation.   |  `None` |
| <a id="doxygen-formula_macrofile"></a>formula_macrofile |  The `formula_macrofile` can contain LaTeX \newcommand and \renewcommand commands to create new LaTeX commands to be used in formulas as building blocks.   |  `None` |
| <a id="doxygen-use_mathjax"></a>use_mathjax |  Enable the `use_mathjax` option to render LaTeX formulas using MathJax (see https://www.mathjax.org) which uses client side JavaScript for the rendering instead of using pre-rendered bitmaps.   |  `None` |
| <a id="doxygen-mathjax_version"></a>mathjax_version |  With `mathjax_version` it is possible to specify the MathJax version to be used.   |  `None` |
| <a id="doxygen-mathjax_format"></a>mathjax_format |  When MathJax is enabled you can set the default output format to be used for the MathJax output.   |  `None` |
| <a id="doxygen-mathjax_relpath"></a>mathjax_relpath |  When MathJax is enabled you need to specify the location relative to the HTML output directory using the `mathjax_relpath` option.   |  `None` |
| <a id="doxygen-mathjax_extensions"></a>mathjax_extensions |  The `mathjax_extensions` tag can be used to specify one or more MathJax extension names that should be enabled during MathJax rendering.   |  `None` |
| <a id="doxygen-mathjax_codefile"></a>mathjax_codefile |  The `mathjax_codefile` tag can be used to specify a file with JavaScript pieces of code that will be used on startup of the MathJax code.   |  `None` |
| <a id="doxygen-searchengine"></a>searchengine |  When the `searchengine` tag is enabled Doxygen will generate a search box for the HTML output.   |  `None` |
| <a id="doxygen-server_based_search"></a>server_based_search |  When the `server_based_search` tag is enabled the search engine will be implemented using a web server instead of a web client using JavaScript.   |  `None` |
| <a id="doxygen-external_search"></a>external_search |  When `external_search` tag is enabled Doxygen will no longer generate the PHP script for searching.   |  `None` |
| <a id="doxygen-searchengine_url"></a>searchengine_url |  The `searchengine_url` should point to a search engine hosted by a web server which will return the search results when `external_search` is enabled.   |  `None` |
| <a id="doxygen-searchdata_file"></a>searchdata_file |  When `server_based_search` and `external_search` are both enabled the unindexed search data is written to a file for indexing by an external tool.   |  `None` |
| <a id="doxygen-external_search_id"></a>external_search_id |  When `server_based_search` and `external_search` are both enabled the `external_search_id` tag can be used as an identifier for the project.   |  `None` |
| <a id="doxygen-extra_search_mappings"></a>extra_search_mappings |  The `extra_search_mappings` tag can be used to enable searching through Doxygen projects other than the one defined by this configuration file, but that are all added to the same external search index.   |  `None` |
| <a id="doxygen-generate_latex"></a>generate_latex |  If the `generate_latex` tag is set to `True`, Doxygen will generate LaTeX output.   |  `None` |
| <a id="doxygen-latex_output"></a>latex_output |  The `latex_output` tag is used to specify where the LaTeX docs will be put.   |  `None` |
| <a id="doxygen-latex_cmd_name"></a>latex_cmd_name |  The `latex_cmd_name` tag can be used to specify the LaTeX command name to be invoked.   |  `None` |
| <a id="doxygen-makeindex_cmd_name"></a>makeindex_cmd_name |  The `makeindex_cmd_name` tag can be used to specify the command name to generate index for LaTeX.   |  `None` |
| <a id="doxygen-latex_makeindex_cmd"></a>latex_makeindex_cmd |  The `latex_makeindex_cmd` tag can be used to specify the command name to generate index for LaTeX.   |  `None` |
| <a id="doxygen-compact_latex"></a>compact_latex |  If the `compact_latex` tag is set to `True`, Doxygen generates more compact LaTeX documents.   |  `None` |
| <a id="doxygen-paper_type"></a>paper_type |  The `paper_type` tag can be used to set the paper type that is used by the printer.   |  `None` |
| <a id="doxygen-extra_packages"></a>extra_packages |  The `extra_packages` tag can be used to specify one or more LaTeX package names that should be included in the LaTeX output.   |  `None` |
| <a id="doxygen-latex_header"></a>latex_header |  The `latex_header` tag can be used to specify a user-defined LaTeX header for the generated LaTeX document.   |  `None` |
| <a id="doxygen-latex_footer"></a>latex_footer |  The `latex_footer` tag can be used to specify a user-defined LaTeX footer for the generated LaTeX document.   |  `None` |
| <a id="doxygen-latex_extra_stylesheet"></a>latex_extra_stylesheet |  The `latex_extra_stylesheet` tag can be used to specify additional user-defined LaTeX style sheets that are included after the standard style sheets created by Doxygen.   |  `None` |
| <a id="doxygen-latex_extra_files"></a>latex_extra_files |  The `latex_extra_files` tag can be used to specify one or more extra images or other source files which should be copied to the `latex_output` output directory.   |  `None` |
| <a id="doxygen-pdf_hyperlinks"></a>pdf_hyperlinks |  If the `pdf_hyperlinks` tag is set to `True`, the LaTeX that is generated is prepared for conversion to PDF (using ps2pdf or pdflatex).   |  `None` |
| <a id="doxygen-use_pdflatex"></a>use_pdflatex |  If the `use_pdflatex` tag is set to `True`, Doxygen will use the engine as specified with `latex_cmd_name` to generate the PDF file directly from the LaTeX files.   |  `None` |
| <a id="doxygen-latex_batchmode"></a>latex_batchmode |  The `latex_batchmode` tag signals the behavior of LaTeX in case of an error.   |  `None` |
| <a id="doxygen-latex_hide_indices"></a>latex_hide_indices |  If the `latex_hide_indices` tag is set to `True` then Doxygen will not include the index chapters (such as File Index, Compound Index, etc.) in the output.   |  `None` |
| <a id="doxygen-latex_bib_style"></a>latex_bib_style |  The `latex_bib_style` tag can be used to specify the style to use for the bibliography, e.g. plainnat, or ieeetr.   |  `None` |
| <a id="doxygen-latex_emoji_directory"></a>latex_emoji_directory |  The `latex_emoji_directory` tag is used to specify the (relative or absolute) path from which the emoji images will be read.   |  `None` |
| <a id="doxygen-generate_rtf"></a>generate_rtf |  If the `generate_rtf` tag is set to `True`, Doxygen will generate RTF output.   |  `None` |
| <a id="doxygen-rtf_output"></a>rtf_output |  The `rtf_output` tag is used to specify where the RTF docs will be put.   |  `None` |
| <a id="doxygen-compact_rtf"></a>compact_rtf |  If the `compact_rtf` tag is set to `True`, Doxygen generates more compact RTF documents.   |  `None` |
| <a id="doxygen-rtf_hyperlinks"></a>rtf_hyperlinks |  If the `rtf_hyperlinks` tag is set to `True`, the RTF that is generated will contain hyperlink fields.   |  `None` |
| <a id="doxygen-rtf_stylesheet_file"></a>rtf_stylesheet_file |  Load stylesheet definitions from file.   |  `None` |
| <a id="doxygen-rtf_extensions_file"></a>rtf_extensions_file |  Set optional variables used in the generation of an RTF document.   |  `None` |
| <a id="doxygen-rtf_extra_files"></a>rtf_extra_files |  The `rtf_extra_files` tag can be used to specify one or more extra images or other source files which should be copied to the `rtf_output` output directory.   |  `None` |
| <a id="doxygen-generate_man"></a>generate_man |  If the `generate_man` tag is set to `True`, Doxygen will generate man pages for classes and files.   |  `None` |
| <a id="doxygen-man_output"></a>man_output |  The `man_output` tag is used to specify where the man pages will be put.   |  `None` |
| <a id="doxygen-man_extension"></a>man_extension |  The `man_extension` tag determines the extension that is added to the generated man pages.   |  `None` |
| <a id="doxygen-man_subdir"></a>man_subdir |  The `man_subdir` tag determines the name of the directory created within `man_output` in which the man pages are placed.   |  `None` |
| <a id="doxygen-man_links"></a>man_links |  If the `man_links` tag is set to `True` and Doxygen generates man output, then it will generate one additional man file for each entity documented in the real man page(s).   |  `None` |
| <a id="doxygen-generate_xml"></a>generate_xml |  If the `generate_xml` tag is set to `True`, Doxygen will generate an XML file that captures the structure of the code including all documentation.   |  `None` |
| <a id="doxygen-xml_output"></a>xml_output |  The `xml_output` tag is used to specify where the XML pages will be put.   |  `None` |
| <a id="doxygen-xml_programlisting"></a>xml_programlisting |  If the `xml_programlisting` tag is set to `True`, Doxygen will dump the program listings (including syntax highlighting and cross-referencing information) to the XML output.   |  `None` |
| <a id="doxygen-xml_ns_memb_file_scope"></a>xml_ns_memb_file_scope |  If the `xml_ns_memb_file_scope` tag is set to `True`, Doxygen will include namespace members in file scope as well, matching the HTML output.   |  `None` |
| <a id="doxygen-generate_docbook"></a>generate_docbook |  If the `generate_docbook` tag is set to `True`, Doxygen will generate Docbook files that can be used to generate PDF.   |  `None` |
| <a id="doxygen-docbook_output"></a>docbook_output |  The `docbook_output` tag is used to specify where the Docbook pages will be put.   |  `None` |
| <a id="doxygen-generate_autogen_def"></a>generate_autogen_def |  If the `generate_autogen_def` tag is set to `True`, Doxygen will generate an AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures the structure of the code including all documentation.   |  `None` |
| <a id="doxygen-generate_sqlite3"></a>generate_sqlite3 |  If the `generate_sqlite3` tag is set to `True` Doxygen will generate a Sqlite3 database with symbols found by Doxygen stored in tables.   |  `None` |
| <a id="doxygen-sqlite3_output"></a>sqlite3_output |  The `sqlite3_output` tag is used to specify where the Sqlite3 database will be put.   |  `None` |
| <a id="doxygen-sqlite3_recreate_db"></a>sqlite3_recreate_db |  The `sqlite3_recreate_db` tag is set to `True`, the existing doxygen_sqlite3.db database file will be recreated with each Doxygen run.   |  `None` |
| <a id="doxygen-generate_perlmod"></a>generate_perlmod |  If the `generate_perlmod` tag is set to `True`, Doxygen will generate a Perl module file that captures the structure of the code including all documentation.   |  `None` |
| <a id="doxygen-perlmod_latex"></a>perlmod_latex |  If the `perlmod_latex` tag is set to `True`, Doxygen will generate the necessary Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI output from the Perl module output.   |  `None` |
| <a id="doxygen-perlmod_pretty"></a>perlmod_pretty |  If the `perlmod_pretty` tag is set to `True`, the Perl module output will be nicely formatted so it can be parsed by a human reader.   |  `None` |
| <a id="doxygen-perlmod_makevar_prefix"></a>perlmod_makevar_prefix |  The names of the make variables in the generated doxyrules.make file are prefixed with the string contained in `perlmod_makevar_prefix`.   |  `None` |
| <a id="doxygen-enable_preprocessing"></a>enable_preprocessing |  If the `enable_preprocessing` tag is set to `True`, Doxygen will evaluate all C-preprocessor directives found in the sources and include files.   |  `None` |
| <a id="doxygen-macro_expansion"></a>macro_expansion |  If the `macro_expansion` tag is set to `True`, Doxygen will expand all macro names in the source code.   |  `None` |
| <a id="doxygen-expand_only_predef"></a>expand_only_predef |  If the `expand_only_predef` and `macro_expansion` tags are both set to `True` then the macro expansion is limited to the macros specified with the `predefined` and `expand_as_defined` tags.   |  `None` |
| <a id="doxygen-search_includes"></a>search_includes |  If the `search_includes` tag is set to `True`, the include files in the `include_path` will be searched if a #include is found.   |  `None` |
| <a id="doxygen-include_path"></a>include_path |  The `include_path` tag can be used to specify one or more directories that contain include files that are not input files but should be processed by the preprocessor.   |  `None` |
| <a id="doxygen-include_file_patterns"></a>include_file_patterns |  You can use the `include_file_patterns` tag to specify one or more wildcard patterns (like *.h and *.hpp) to filter out the header-files in the directories.   |  `None` |
| <a id="doxygen-predefined"></a>predefined |  The `predefined` tag can be used to specify one or more macro names that are defined before the preprocessor is started (similar to the -D option of e.g. gcc).   |  `None` |
| <a id="doxygen-expand_as_defined"></a>expand_as_defined |  If the `macro_expansion` and `expand_only_predef` tags are set to `True` then this tag can be used to specify a list of macro names that should be expanded.   |  `None` |
| <a id="doxygen-skip_function_macros"></a>skip_function_macros |  If the `skip_function_macros` tag is set to `True` then Doxygen's preprocessor will remove all references to function-like macros that are alone on a line, have an all uppercase name, and do not end with a semicolon.   |  `None` |
| <a id="doxygen-tagfiles"></a>tagfiles |  The `tagfiles` tag can be used to specify one or more tag files.   |  `None` |
| <a id="doxygen-generate_tagfile"></a>generate_tagfile |  When a file name is specified after `generate_tagfile`, Doxygen will create a tag file that is based on the input files it reads.   |  `None` |
| <a id="doxygen-allexternals"></a>allexternals |  If the `allexternals` tag is set to `True`, all external classes and namespaces will be listed in the class and namespace index.   |  `None` |
| <a id="doxygen-external_groups"></a>external_groups |  If the `external_groups` tag is set to `True`, all external groups will be listed in the topic index.   |  `None` |
| <a id="doxygen-external_pages"></a>external_pages |  If the `external_pages` tag is set to `True`, all external pages will be listed in the related pages index.   |  `None` |
| <a id="doxygen-hide_undoc_relations"></a>hide_undoc_relations |  If set to `True` the inheritance and collaboration graphs will hide inheritance and usage relations if the target is undocumented or is not a class.   |  `None` |
| <a id="doxygen-have_dot"></a>have_dot |  If you set the `have_dot` tag to `True` then Doxygen will assume the dot tool is available from the path.   |  `None` |
| <a id="doxygen-dot_num_threads"></a>dot_num_threads |  The `dot_num_threads` specifies the number of dot invocations Doxygen is allowed to run in parallel.   |  `None` |
| <a id="doxygen-dot_common_attr"></a>dot_common_attr |  `dot_common_attr` is common attributes for nodes, edges and labels of subgraphs.   |  `None` |
| <a id="doxygen-dot_edge_attr"></a>dot_edge_attr |  `dot_edge_attr` is concatenated with `dot_common_attr`.   |  `None` |
| <a id="doxygen-dot_node_attr"></a>dot_node_attr |  `dot_node_attr` is concatenated with `dot_common_attr`.   |  `None` |
| <a id="doxygen-dot_fontpath"></a>dot_fontpath |  You can set the path where dot can find font specified with fontname in `dot_common_attr` and others dot attributes.   |  `None` |
| <a id="doxygen-dot_transparent"></a>dot_transparent |  If the `dot_transparent` tag is set to `True`, then the images generated by dot will have a transparent background.   |  `None` |
| <a id="doxygen-class_graph"></a>class_graph |  If the `class_graph` tag is set to `True` or GRAPH or BUILTIN then Doxygen will generate a graph for each documented class showing the direct and indirect inheritance relations.   |  `None` |
| <a id="doxygen-collaboration_graph"></a>collaboration_graph |  If the `collaboration_graph` tag is set to `True` then Doxygen will generate a graph for each documented class showing the direct and indirect implementation dependencies (inheritance, containment, and class references variables) of the class with other documented classes.   |  `None` |
| <a id="doxygen-group_graphs"></a>group_graphs |  If the `group_graphs` tag is set to `True` then Doxygen will generate a graph for groups, showing the direct groups dependencies.   |  `None` |
| <a id="doxygen-uml_look"></a>uml_look |  If the `uml_look` tag is set to `True`, Doxygen will generate inheritance and collaboration diagrams in a style similar to the OMG's Unified Modeling Language.   |  `None` |
| <a id="doxygen-uml_limit_num_fields"></a>uml_limit_num_fields |  If the `uml_look` tag is enabled, the fields and methods are shown inside the class node.   |  `None` |
| <a id="doxygen-uml_max_edge_labels"></a>uml_max_edge_labels |  If the `uml_look` tag is enabled, field labels are shown along the edge between two class nodes.   |  `None` |
| <a id="doxygen-dot_uml_details"></a>dot_uml_details |  If the `dot_uml_details` tag is set to `False`, Doxygen will show attributes and methods without types and arguments in the UML graphs.   |  `None` |
| <a id="doxygen-dot_wrap_threshold"></a>dot_wrap_threshold |  The `dot_wrap_threshold` tag can be used to set the maximum number of characters to display on a single line.   |  `None` |
| <a id="doxygen-template_relations"></a>template_relations |  If the `template_relations` tag is set to `True` then the inheritance and collaboration graphs will show the relations between templates and their instances.   |  `None` |
| <a id="doxygen-include_graph"></a>include_graph |  If the `include_graph`, `enable_preprocessing` and `search_includes` tags are set to `True` then Doxygen will generate a graph for each documented file showing the direct and indirect include dependencies of the file with other documented files.   |  `None` |
| <a id="doxygen-included_by_graph"></a>included_by_graph |  If the `included_by_graph`, `enable_preprocessing` and `search_includes` tags are set to `True` then Doxygen will generate a graph for each documented file showing the direct and indirect include dependencies of the file with other documented files.   |  `None` |
| <a id="doxygen-call_graph"></a>call_graph |  If the `call_graph` tag is set to `True` then Doxygen will generate a call dependency graph for every global function or class method.   |  `None` |
| <a id="doxygen-caller_graph"></a>caller_graph |  If the `caller_graph` tag is set to `True` then Doxygen will generate a caller dependency graph for every global function or class method.   |  `None` |
| <a id="doxygen-graphical_hierarchy"></a>graphical_hierarchy |  If the `graphical_hierarchy` tag is set to `True` then Doxygen will graphical hierarchy of all classes instead of a textual one.   |  `None` |
| <a id="doxygen-directory_graph"></a>directory_graph |  If the `directory_graph` tag is set to `True` then Doxygen will show the dependencies a directory has on other directories in a graphical way.   |  `None` |
| <a id="doxygen-dir_graph_max_depth"></a>dir_graph_max_depth |  The `dir_graph_max_depth` tag can be used to limit the maximum number of levels of child directories generated in directory dependency graphs by dot.   |  `None` |
| <a id="doxygen-dot_image_format"></a>dot_image_format |  The `dot_image_format` tag can be used to set the image format of the images generated by dot.   |  `None` |
| <a id="doxygen-interactive_svg"></a>interactive_svg |  If `dot_image_format` is set to svg, then this option can be set to `True` to enable generation of interactive SVG images that allow zooming and panning.   |  `None` |
| <a id="doxygen-dot_path"></a>dot_path |  The `dot_path` tag can be used to specify the path where the dot tool can be found.   |  `None` |
| <a id="doxygen-dotfile_dirs"></a>dotfile_dirs |  The `dotfile_dirs` tag can be used to specify one or more directories that contain dot files that are included in the documentation (see the \dotfile command).   |  `None` |
| <a id="doxygen-dia_path"></a>dia_path |  You can include diagrams made with dia in Doxygen documentation.   |  `None` |
| <a id="doxygen-diafile_dirs"></a>diafile_dirs |  The `diafile_dirs` tag can be used to specify one or more directories that contain dia files that are included in the documentation (see the \diafile command).   |  `None` |
| <a id="doxygen-plantuml_jar_path"></a>plantuml_jar_path |  When using PlantUML, the `plantuml_jar_path` tag should be used to specify the path where java can find the plantuml.jar file or to the filename of jar file to be used.   |  `None` |
| <a id="doxygen-plantuml_cfg_file"></a>plantuml_cfg_file |  When using PlantUML, the `plantuml_cfg_file` tag can be used to specify a configuration file for PlantUML.   |  `None` |
| <a id="doxygen-plantuml_include_path"></a>plantuml_include_path |  When using PlantUML, the specified paths are searched for files specified by the !include statement in a PlantUML block.   |  `None` |
| <a id="doxygen-plantumlfile_dirs"></a>plantumlfile_dirs |  The plantumlfile_dirs tag can be used to specify one or more directories that contain PlantUml files that are included in the documentation (see the \plantumlfile command).   |  `None` |
| <a id="doxygen-dot_graph_max_nodes"></a>dot_graph_max_nodes |  The `dot_graph_max_nodes` tag can be used to set the maximum number of nodes that will be shown in the graph.   |  `None` |
| <a id="doxygen-max_dot_graph_depth"></a>max_dot_graph_depth |  The `max_dot_graph_depth` tag can be used to set the maximum depth of the graphs generated by dot.   |  `None` |
| <a id="doxygen-dot_multi_targets"></a>dot_multi_targets |  Set the `dot_multi_targets` tag to `True` to allow dot to generate multiple output files in one run (i.e. multiple -o and -T options on the command line).   |  `None` |
| <a id="doxygen-generate_legend"></a>generate_legend |  If the `generate_legend` tag is set to `True` Doxygen will generate a legend page explaining the meaning of the various boxes and arrows in the dot generated graphs.   |  `None` |
| <a id="doxygen-dot_cleanup"></a>dot_cleanup |  If the `dot_cleanup` tag is set to `True`, Doxygen will remove the intermediate files that are used to generate the various graphs.   |  `None` |
| <a id="doxygen-mscgen_tool"></a>mscgen_tool |  You can define message sequence charts within Doxygen comments using the \msc command.   |  `None` |
| <a id="doxygen-mscfile_dirs"></a>mscfile_dirs |  The `mscfile_dirs` tag can be used to specify one or more directories that contain msc files that are included in the documentation (see the \mscfile command).   |  `None` |
| <a id="doxygen-kwargs"></a>kwargs |  Additional arguments to pass to the rule (e.g. `visibility = ["//visibility:public"], tags = ["manual"]`)   |  none |


<a id="collect_files_aspect"></a>

## collect_files_aspect

<pre>
load("@rules_doxygen//doxygen:doxygen.bzl", "collect_files_aspect")

collect_files_aspect()
</pre>

When applied to a target, this aspect collects the source files from the target and its dependencies, and makes them available in the TransitiveSourcesInfo provider.

**ASPECT ATTRIBUTES**


| Name | Type |
| :------------- | :------------- |
| deps| String |




