doxygen - 如果在同一级别,Doxygen(或其他工具)类似地记录类和命名空间
问题描述
我有一堆命名空间(包含自由函数)和类(显然包含成员函数),每一个在顶层都有一个 Doxygen 注释和一些针对其成员的 Doxygen 注释。它们位于顶级命名空间(一个用于整个项目)和二级命名空间(将项目分解为包)。像这样:
proj/pkg1/foo.hpp
:class proj::pkg1::Foo
proj/pkg1/bar.hpp
:class proj::pkg1::Bar
proj/pkg1/baz.hpp
:namespace proj::pkg1::Baz
proj/pkg2/one.hpp
:class proj::pkg2::One
proj/pkg2/two.hpp
:namespace proj::pkg2::Two
我没有任何@file
意见。它们完全是多余的,因为每个组件已经有一个主注释,它附加到主类或命名空间。
我尝试通过 Doxygen 运行它,结果是一团糟:
- 命名空间和类在标题行和导航面板中被分成两个不同的层次结构。但我希望它们都在一棵树中,因为 eg
pkg2::One
属于pkg2::Two
. - 命名空间的主要层次结构隐藏在导航面板下方的三层(项目名称 -> 命名空间 -> 命名空间列表)。它在“命名空间成员”旁边 - 谁使用它!?
- 文件(和目录)还有另一个层次结构。这是多余的,因为它们完全匹配命名空间(和类)的层次结构。
- 现在这有点离题了,但我还想在包命名空间中添加注释。这些具有分离类和名称空间的相同问题(不是什么大问题),但也显示了各种免费功能,例如
operator<<(proj::pkg2::One
.
有什么办法可以稍微清理一下吗?也许与狮身人面像和呼吸?
示例屏幕截图
这是 Doxygen 在上述代码中默认生成的内容(它甚至没有提到Baz
和Two
!),以及我更喜欢它的样子:
解决方案
这是一个特别可怕的 hack,但我提到它是为了记录。您可以决定 Doxygen 最好地处理类,并将所有组件命名空间(第三级命名空间)重新标记为类。像这样:
namespace proj {
namespace pkg1 {
/// @brief The Doxygen comment goes here.
#ifdef DOXYGEN
class
#else
namespace
#endif
Baz {
然后设置PREDEFINED = DOXYGEN
在Doxyfile
.
显然,this 的缺点是它在源代码中看起来很丑陋,而且它在文档中显示为“类”令人困惑。
推荐阅读
- r - desctools 包中的 smape 不起作用吗?
- html - 你能帮忙解决一个关于 first-child 和 after 选择器的问题吗?
- javascript - 代码从 Chrome 控制台执行,但不是从用户脚本执行
- python - 仅使用 pandas to_sql() 在 SQLIte 中插入新行
- sql-server - 查找 SQL Server 2008 数据库连接以及如何终止它们
- python - 刮篮球运动员队名的最佳方法是什么?
- excel - Excel 旭日形图:缺少一些标签
- php - 脚本发布 value 中的第一个数字
- hive - 在 Hive 表的每个分区中选择第一行
- python - 如何使用 python 通过我的 hotmail.com 帐户自动发送电子邮件?