ReStructuredText and Sphinx bridge to Doxygen
Packagers: PGP signing key changes for Breathe >= v4.23.0. https://github.com/michaeljones/breathe/issues/591
.. image:: https://github.com/michaeljones/breathe/workflows/unit%20tests/badge.svg :target: https://github.com/michaeljones/breathe/actions?query=workflow%3A%22unit+tests%22
This is an extension to reStructuredText and Sphinx to be able to read and render the Doxygen xml output.
Breathe is available from github and
PyPI, the Python Package Index_. It can be installed with::
pip install breathe
The documentation is available
here_. Thank you to the people running
Read the Docsfor such an excellent service.
The source for the documentation is in the
documentationfolder if you want to built it and read it locally.
Breathe does not always get the attention it deserves but I am keen to keep it moving forward. If you report an issue, please keep reminding me about it until it is fixed. I should be better at this but in silence I tend to move to other things so keep reminding me.
The testsuite can be run with::
The documentation also does a good effort of covering the available functionality with different examples. To build the documentation, run::
This will run doxygen over the example code and then run the Breathe documentation. View the results at::
Further to this if you want to compare the current documentation output against a previous state in order to check for regressions there is a
comparescript in the
documentationfolder. It takes two arguments which are two commit references that you'd like to compare. This means that all your changes have to be committed first. Also the script does not resolve state dependent references like
HEADso provide concrete commit references like sha1s or branch names. A typical example is to compare your current branch output to master::
# Make sure all your changes are committed first cd documentation ./compare master my-branch
This will do a checkout and build at each commit and then run
meldagainst the resulting directories so you can see the differences introduced by your branch.
Development is currently done with:
Doxygen 1.5.1 seems to produce xml with repeated sections which causes Breathe some confusion. Not sure when this was resolved but it might be best to go for the latest possible.
The archive for the Google groups list can be found
The previous mailing list was on
librelist.com__ and the archives are available
Please post new questions as GitHub issues.
Examples of Breathe used by other projects:
Lasso C API_ [
If you have an example you would like listed here, please make a github issue with the details.
Breathe is not the only solution to this problem. These are the alternatives that we know about. We are very happy to list others if you'd like to provide a link in a GitHub issue.
Command for releasing source bundle & wheel to PyPI::
python setup.py sdist bdist_wheel upload
Breathe is currently maintained by
vermeeren_ and was formerly maintained by
vitaut_, contributors include:
Docutils_ and reStructuredText.
2021-02-16 - Breathe v4.27.0
2021-01-21 - Breathe v4.26.1
2021-01-08 - Breathe v4.26.0
2020-12-16 - Breathe v4.25.1
2020-12-15 - Breathe v4.25.0
2020-12-01 - Breathe v4.24.1
2020-11-15 - Breathe v4.24.0
2020-10-20 - Breathe v4.23.0
2020-09-26 - Breathe v4.22.1
2020-09-19 - Breathe v4.22.0
breathe_show_enumvalue_initializeroption specifying whether value of enumvalue should be displayed. #581
2020-09-10 - Breathe v4.21.0
2020-08-19 - Breathe v4.20.0
2020-06-17 - Breathe v4.19.2
2020-06-08 - Breathe v4.19.1
2020-06-07 - Breathe v4.19.0
2020-05-10 - Breathe v4.18.1
2020-05-02 - Breathe v4.18.0
2020-05-01 - Breathe v4.17.0
2020-04-19 - Breathe v4.16.0
2020-04-07 - Breathe v4.15.0
2020-04-07 - Breathe v4.14.2
2020-02-02 - Breathe v4.14.1
2019-11-26 - Breathe v4.14.0
2019-08-01 - Breathe v4.13.1
2019-04-23 - Breathe v4.13.0.post0
2019-04-21 - Breathe v4.13.0
2019-03-15 - Breathe v4.12.0
2018-12-11 - Breathe v4.11.1
2018-10-31 - Breathe v4.11.0
2018-08-07 - Breathe v4.10.0
2018-06-03 - Breathe v4.9.1
2018-06-01 - Breathe v4.9.0
2018-05-26 - Breathe v4.8.0
2017-10-09 - Breathe v4.7.3
2017-08-15 - Breathe v4.7.2
2017-08-13 - Breathe v4.7.1
2017-08-09 - Breathe v4.7.0
outtypesoption to prevent documenting namespace and files
breathe_show_define_initializeroption specifying whether value of macros should be displayed.
breathe_use_project_refidsoption controlling whether the refids generated by breathe for doxygen elements contain the project name or not.
2017-02-25 - Breathe v4.6.0
2017-02-12 - Breathe v4.5.0
--projectflag to breathe-apidoc helper
2016-11-13 - Breathe v4.4.0
2016-11-05 - Breathe v4.3.1
2016-11-05 - Breathe v4.3.0
2016-03-19 - Breathe v4.2.0
SEVERE: Duplicate IDwarnings when using function overloads.
2015-08-27 - Breathe v4.1.0
breathe_doxygen_config_optionsconfig variable which allows for adding more config lines to the doxygen file used for the auto-directives.
2015-04-02 - Breathe v4.0.0
2014-11-09 - Breathe v3.2.0
\regardless of the platform.
autodirectives without specifying the
:project:option even though the default project config setting was set.
doxygenfunctionno longer inappropriately triggers the duplicate target check and fails to output link targets.
rubricnodes rather than
descnodes with signatures & content. Now headings like 'Public Functions' appear inline with their subject matter.
2014-09-07 - Breathe v3.1.0
doxygenclassdirective can now reference template specialisations by specifying the specialisation in the argument name.
2014-08-04 - Breathe v3.0.0
doxygenfunctiondirective. Also, provide a list of potential matches when no match is found.
:members:implementation to handle inner classes properly.
doxygenstructto share the
doxygenclassimplementation path which grants it the options from
:outline:option support to
doxygengroupdirectives and replaced it with
:private-members:, and changed
breathe_default_sectionsconfig variable to
breathe_default_members. This is designed to more closely match the Sphinx autodoc functionality and interface.
2014-06-15 - Breathe v2.0.0
autodoxygen*directives to require explicitly declared source files in the
conf.pyrather than attempting to detect them from the directive arguments.
conf.pyfile. Previously, it would assume they were relative to the user's current working directory. This breaks projects which use separate build & source directories.