我一直在寻找一些描述如何使用doxygen生成简单类图的材料,但却找不到。有人可以帮忙吗?
我需要从一组C ++文件中创建如下所示的图表。
如果有更好的工具来实现这一目标,请告诉我。
答案 0 :(得分:48)
Doxygen创建了继承图,但我不认为它会创建一个完整的类层次结构。它允许您使用GraphViz工具。如果您使用Doxygen GUI前端工具,您将在Step2: -> Wizard tab -> Diagrams
中找到相关选项。 DOT关系选项位于“专家”选项卡下。
答案 1 :(得分:40)
引自this post(由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
答案 2 :(得分:29)
我认为以前的答案几乎都有:
缺少的选项是在Doxyfile中添加COLLABORATION_GRAPH = YES
。我假设你可以在doxywizard GUI中的某个地方做同样的事情(我不会使用doxywizard)。
因此,作为一个更完整的例子,典型的" Doxyfile"与我倾向于使用的UML输出相关的选项是:
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
)确实会对性能产生影响,因此YMMV。
我倾向于讨厌" RTFM"样式答案,所以对这句话道歉,但在这种情况下,Doxygen文档真的是你的朋友,所以在上面提到的设置上查看Doxygen文档 - 上次我看到你可以在http://www.doxygen.nl/manual/config.html找到详细信息。 / p>
答案 3 :(得分:4)
我认为你需要编辑doxys文件并将GENERATE_UML(类似的东西)设置为true。你需要安装dot / graphviz。
答案 4 :(得分:4)
Enterprise Architect将根据导入的源代码构建UML图。
答案 5 :(得分:2)
最高的2个答案是正确的。截止到今天,我唯一需要更改的(从默认设置开始)是使用点而不是内置生成器来启用生成。
一些重要说明:
html/inherits.html
或(从网站导航中)找到类=>类层次=>“转到文本类层次”。T
。
foo
继承自T
,并且T
模板类型参数具有默认值,则将采用该默认值。如果存在从bar
继承而来的foo<U>
类型(其中U
与默认值不同),则bar
将具有foo<U>
父级。 foo<>
和bar<U>
将没有共同的父母。variant
实例都将显示为继承自variant<Ts...>
。<...>
字符串,表示没有默认值的type和non-type参数。