dev*_*ull 78 c++ uml doxygen class-diagram graphviz
我一直在寻找一些描述如何使用doxygen生成简单类图的材料,但却找不到.有人可以帮忙吗?
我需要从一组C++文件中创建如下所示的图表.
如果有更好的工具来实现这一目标,请告诉我.
DPD*_*DPD 48
Doxygen创建了继承图,但我认为它不会创建一个完整的类层次结构.它允许您使用GraphViz工具.如果您使用Doxygen GUI前端工具,您将在中找到相关选项Step2: -> Wizard tab -> Diagrams
.DOT关系选项位于"专家"选项卡下.
ave*_*age 41
引用这篇文章(由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
Run Code Online (Sandbox Code Playgroud)
use*_*647 36
嗯,这似乎是一个古老的问题,但是因为我过去几天一直在搞乱Doxygen配置,而我的头仍然充满了当前的信息让我们有一个刺 -
我认为以前的答案几乎有它:
缺少的选项是添加COLLABORATION_GRAPH = YES
Doxyfile.我假设你可以在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
Run Code Online (Sandbox Code Playgroud)
这些设置将生成"继承"(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.stack.nl/~dimitri/doxygen/manual/config.html.
得票最高的 2 个答案是正确的。截至今天,我唯一需要更改的(默认设置)是使用点而不是内置生成器启用生成。
一些重要的注意事项:
html/inherits.html
所有这些图都可以在或(从网站导航)classes => class hierarchy => “Go to the textual class hierarchies”中找到。T
.
foo
继承自T
并且T
模板类型参数具有默认值,则将假定该默认值。如果有一个bar
继承自foo<U>
不同于U
默认值的类型,bar
则将有一个foo<U>
父级。foo<>
并且bar<U>
不会有共同的父母。variant
实例化都将显示为继承自variant<Ts...>
.<...>
字符串,表示没有默认值的类型和非类型参数。我认为您需要编辑 doxys 文件并将 GENERATE_UML(类似的东西)设置为 true。并且您需要安装 dot/graphviz。