Doxygen(或其他工具)文档类和名称空间(如果处于同一级别)类似
我有一堆名称空间(包含自由函数)和类(显然包含成员函数),每个名称空间的顶层都有一个Doxygen注释,其成员也有一些Doxygen注释。它们位于顶级名称空间(一个用于整个项目)和辅助名称空间(用于将项目分解为包)中。像这样:Doxygen(或其他工具)文档类和名称空间(如果处于同一级别)类似,doxygen,python-sphinx,Doxygen,Python Sphinx,我有一堆名称空间(包含自由函数)和类(显然包含成员函数),每个名称空间的顶层都有一个Doxygen注释,其成员也有一些Doxygen注释。它们位于顶级名称空间(一个用于整个项目)和辅助名称空间(用于将项目分解为包)中。像这样: namespace proj { namespace pkg1 { /// @brief The Doxygen comment goes here. #ifdef DOXYGEN class #else namespace #endif Baz { proj/pk
namespace proj {
namespace pkg1 {
/// @brief The Doxygen comment goes here.
#ifdef DOXYGEN
class
#else
namespace
#endif
Baz {
: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
@文件
注释。它们是完全冗余的,因为每个组件已经有一个主注释,它附加到主类或名称空间
我试着通过Doxygen运行,结果是一团糟:
- 名称空间和类被分为两个不同的层次结构,分别位于标题行和导航面板中。但我希望它们都放在一棵树中,因为例如,
与pkg2::One
一起pkg2::Two
- 名称空间的主要层次结构隐藏在导航面板的下面三层(项目名称->名称空间->名称空间列表)。它在“名称空间成员”的旁边-谁使用它李>
- 文件(和目录)还有另一个层次结构。这是多余的,因为它们完全匹配名称空间(和类)的层次结构
- 现在这有点离题了,但我还想向包名称空间添加注释。它们在分离类和名称空间(不是什么大问题)方面有着相同的问题,但也显示了各种自由函数,例如
操作符,为了让事情顺利进行,这里有一个可能的解决方案: 稍微改变一下期望值:不要希望两级结构一次呈现给读者,而是一次呈现一部分。让用户单击树中每个命名空间的单独页面:
命名空间的文档页面显示了它包含的所有包(即,在示例中,它显示了命名空间proj
和pkg1
)pkg2
- 每个包名称空间页面显示其中的所有类和组件名称空间(在单独的列表中,这有点烦人,但至少每个包的所有内容都在一起)
隐藏树视图,并隐藏标题行GENERATE_TREEVIEW=NO
主页可以只是顶级DISABLE_INDEX=YES
命名空间页面的链接(主页的通常内容移动到proj
详细描述),代码如下:proj
一个微小的变化是在主页面中手动列出包含如下代码的包,并绕过/** @mainpage @ref proj "Click here for the proj documentation" */
名称空间页面。对于没有总体顶级名称空间的项目,或者您希望对主页进行更好的控制的项目,这将非常有效proj
/** @mainpage Packages: - @ref proj::pkg1 @n @copybrief proj::pkg1 - @ref proj::pkg2 @n @copybrief proj::pkg2 */
这是一个特别可怕的黑客行为,但我要记录在案。您可以确定类最好由Doxygen处理,并将所有组件名称空间(第三级名称空间)重新标记为类。像这样:
然后在namespace proj { namespace pkg1 { /// @brief The Doxygen comment goes here. #ifdef DOXYGEN class #else namespace #endif Baz {
中设置Doxyfile
PREDEFINED=DOXYGEN
显然,这的缺点是,它在源代码中看起来很丑陋,在文档中显示为“类”令人困惑。您使用的是哪个版本的doxygen。您能否显示输出不符合预期的地方/小的完整示例。@albert是最新版本(1.8.15),但我认为最近没有任何相关变化(多年来我多次遇到相同的问题)。我已经完整地描述了一些示例文件,并且添加了输出内容的屏幕截图(这对于使用Doxygen的人来说并不奇怪)和我正在寻找的那种东西的模型(为我糟糕的PhotoShop技能道歉!)。不要把模型看得太字面,它不必看起来完全像那样。我只想合并类和名称空间,并去除一些垃圾。对于名称列表实体和类实体的合并,我没有直接的答案,但mybe分组(请参见
等)可能会给出一些结果。关于“文件”条目,请参见配置项\defgroup
和命令LAYOUT\u FILE
。关于带有“主页等”的行,请查看配置设置doxygen-l…
@albert谢谢,使用组/模块是一个好主意。但据我所知,这将意味着在每个文件中编写大量样板文件Doxygen,或者编写一个脚本来自动生成样板文件。我认为从长远来看,这是很难理解/维持的。只是一个简短的鼓励说明这个问题引起了注意。我调查了一下,想提出一个解决办法,但遗憾的是找不到。将类和命名空间树合并在一起看起来会更好,这将是对doxygen工具的一个很好的改进(在我看来)。DISABLE\u INDEX