Skip to content

duplicate filenames across multiple breathe projects still conflict #994

Open
@jjblum

Description

@jjblum

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions