Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

duplicate filenames across multiple breathe projects still conflict #994

Open
jjblum opened this issue Aug 26, 2024 · 0 comments
Open

duplicate filenames across multiple breathe projects still conflict #994

jjblum opened this issue Aug 26, 2024 · 0 comments

Comments

@jjblum
Copy link

jjblum commented Aug 26, 2024

Hello. I am using Doxygen 1.11.0, Breathe 4.35.0, and Sphinx 7.1.2 to generate docs for a large mono-repo project. I am currently constrained to using the latest versions compatible with python3.8.

We have a folder structure something like

docs/
    index.rst
    conf.py
    Doxyfile
project_1/
    docs/
        project_1_api.rst
    src/
        utils.py
project_2/
    docs/
        project_2_api.rst
    src/
        utils.py

where there is the same utils.py filename in two different locations, with different content in each file.

In the index.rst file I have the project_1_api.rst and project_2_api.rst in a toctree. An in the project_X_api.rst files I am using the .. doxygenfile:: utils.py directive.

When I had just a single breathe project (invoke Doxygen once on all the projects), I get an error along the lines of

project_1_api.rst:9: WARNING: duplicate object description of utils, other instance in project_2_api, use :noindex: for one of them

I thought that the :project: option for doxygenfile would act like a namespace, so I went to the trouble of implementing something that would call Doxygen on each individual project, changing the content in my Doxyfile via environment variables for each call. I added :project: options so that project_1_api.rst looked like

.. doxygenfile:: utils.py
   :project: project_1

and project_2_api.rst looked like

.. doxygenfile:: utils.py
   :project: project_2

And I changed breathe_projects in conf.py to have project_1 and project_2.

I am sure that the project docs are each being built and that those breathe projects can be used in the directive option successfully, but I still get an identical duplicate object warning. I tried adding a path in front of utils.py in the directive, but that did not change the result.

My expectation was that using multiple breathe projects and using the :project: option with .. doxygenfile:: would prevent such a conflict analogous to how a namespace would prevent such a conflict.

Is my expectation correct, but I have just implemented something incorrectly? Or does Breathe simply require filenames to be unique across all Breathe projects in order to safely use them with doxygenfile?

Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant