在 Doxygen 中,如果我有以下代码结构:
foo/__init__.py
foo/bar.py
包含foo/bar.py
:
def meh():
"""@brief Some cool feature.
More details...
"""
print "Hello, world!"
并foo/__init__.py
包含:
# Publicly expose "foo.bar.meh" as "foo.meh".
from foo.bar import meh
在这个方案中,纯粹是出于结构代码布局的原因meh
在内部foo.bar
,应该像foo.meh
在公共 API 中一样出现。
该方案的一个实际示例os.path
来自标准库,该库公开公开了来自许多特定于操作系统的实现模块之一的符号(例如,这些模块也恰好可用os.path.nt
)。
当我在这个源代码树上运行 Doxygen 时,我得到meh
asfoo.bar.meh
而我不能得到它foo.meh
。
meh
我尝试使用该命令明确限定,@fn
但随后我收到一些奇怪的警告,并且该函数不在输出中。使用@class
for classes 会产生一种情况,我有两个Meh
类,一个有简短且失败的文档,而另一个有方法和其他成员。据推测,Doxygen 将该@class
指令解释为另一个模块中的类的文档,并且不将文档与特殊注释块后面的类相关联。
如何使用 Doxygen 将内部模块符号公开为公共包符号?
作为记录,这是一个非常大的混合 C++ 和 Python 代码库,其中包含大量 Doxygen 注释,我对转换为 reStrcuturedText 或 Sphinx 不感兴趣(至少在短期内)。