sphinx + breathe + doxygen: .. doxygendefine:: 仅适用于头文件

sphinx + breathe + doxygen: .. doxygendefine:: only works for header files

我有一个 C 项目,我正在使用 sphinx + breathe + doxygen 进行记录。

我想记录一个定义使用

.. doxygendefine:: MY_DEFINE

只要在 .h 文件中定义 MY_DEFINE 就可以正常工作。当它移动到 .c 文件时,sphinx 告诉我

doxygendefine: Cannot find define “MY_DEFINE” in doxygen xml output for project ...

查看由 doxygen 生成的 XML 文件,发现定义的文档在 XML 中。然后我尝试使用

.. doxygenfile:: file.c

生成文件的完整文档。在此文档输出中,存在定义 MY_DEFINE。

我不认为问题出在我的 doxygen 设置上。是吗?

是否存在导致此行为的呼吸配置?

我该如何解决这个问题?这让我发疯,从源文件中记录东西是行不通的。

顺便说一句:记录函数也只有在头文件中定义时才有效。 C 文件中的静态函数也未找到(尽管存在于 doxygen 的 XML 输出中)

我再次阅读文档并意识到,breathe 不会搜索“实现”文件。

此行为由

控制
breathe_implementation_filename_extensions = ['.c', '.cc', '.cpp']

配置变量。如果我从该列表中排除 C 文件,则会找到定义。但是,如果您的文档中同时包含头文件和包含原型和实现的 C 文件,那么呼吸会不愉快。

我想呼吸+斯芬克斯组合对我来说没什么用,我会暂时坚持使用doxygen。