我一直在寻找一些材料,描述如何使用doxygen生成简单的类图,但没有找到。有人可以帮忙吗?
我需要从一组C++文件创建如下所示的图表。
如果有更好的工具可以更轻松地实现此目的,请告诉我。
我一直在寻找一些材料,描述如何使用doxygen生成简单的类图,但没有找到。有人可以帮忙吗?
我需要从一组C++文件创建如下所示的图表。
如果有更好的工具可以更轻松地实现此目的,请告诉我。
嗯,这似乎是一个有点陈旧的问题,但由于我最近几天一直在调整Doxygen配置,而我的头脑仍然充满了相关信息,让我们试着回答一下 -
我认为以前的答案差不多了:
缺少的选项是在Doxyfile中添加COLLABORATION_GRAPH = YES
。我假设您可以在doxywizard GUI的某个地方执行相同的操作(我不使用doxywizard)。
因此,作为更完整的示例,我倾向于使用与UML输出相关的典型“Doxyfile”选项:
EXTRACT_ALL = YES
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = NO
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
UML_LOOK = YES
UML_LIMIT_NUM_FIELDS = 50
TEMPLATE_RELATIONS = YES
DOT_GRAPH_MAX_NODES = 100
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = YES
这些设置将生成“继承”(CLASS_GRAPH=YES
)和“协作”(COLLABORATION_GRAPH=YES
)图表。
根据您对Doxygen输出的“部署”目标,设置DOT_IMAGE_FORMAT = svg
也可能会有用。使用svg输出,图表是“可缩放”的,而不是像.png等位图格式的固定分辨率。显然,如果在IE之外的浏览器中查看输出,则还可以使用INTERACTIVE_SVG = YES
,以允许生成的svg图表进行“交互式缩放和平移”。我曾经尝试过这个功能,当时svg输出非常视觉上令人满意,但是那时候,浏览器对svg的支持还有点不一致,希望这种情况最近已经得到改善。
正如其他评论所提到的,这些设置(特别是DOT_GRAPH_MAX_NODES
)可能会对性能产生影响,因此结果因人而异。
我通常讨厌“RTFM”风格的回答,对于这句话,我表示歉意,但在这种情况下,Doxygen文档真的是您的好朋友,因此请查看有关上述设置的Doxygen文档-上次我查看时,您可以在http://www.doxygen.nl/manual/config.html找到详细信息。
RECURSIVE
字段更改为YES。 - prehistoricpenguinDoxygen可以创建继承图,但我认为它不会创建整个类层次结构。它允许您使用GraphViz工具。如果您使用Doxygen GUI前端工具,则可以在Step2: ->向导选项卡 ->图表
中找到相关选项。DOT关系选项位于专家选项卡下。
以下是此帖子的引用(作者为doxygen本人):
run doxygen -g and change the following options of the generated Doxyfile:
EXTRACT_ALL = YES
HAVE_DOT = YES
UML_LOOK = YES
run doxygen again
排名最高的两个答案是正确的。截至今天,我所需要更改的唯一一件事(从默认设置中)就是启用使用dot生成图形,而不是使用内置生成器。
一些重要注意事项:
html/inherits.html
中找到,或者(从网站导航栏)类=>类层次结构=>"转到文本类层次结构"。T
继承。
foo
从T
继承,并且T
模板类型参数具有默认值,则将假定该默认值。如果存在一个类型bar
,它从foo<U>
继承,其中U
不同于默认值,则bar
将具有一个foo<U>
父类。foo<>
和bar<U>
将没有一个共同的父类。variant
实例化将显示为继承自variant<Ts...>
。<...>
字符串。我认为您需要编辑doxys文件,并将GENERATE_UML(类似于此)设置为true。而且您需要安装dot/graphviz。