如何使Doxygen显示菱形继承图

5

Doxygen有一个很好的功能,可以从代码中生成继承图。然而,当使用具有共同基类的多重继承时,图表显示两个独立的基类(即使我正在使用虚继承,如基类周围的虚线所示)

enter image description here

我该如何让Doxygen绘制出更像下面这样的内容...

     D
    / \
   B   C
    \ /
     A

不使用虚继承时可能出现以下情况:

     D
   /   \
   B   C
   |   |
   A   A

你知道吗,我很久以前就点赞和收藏了这个,但是我越想越觉得doxygen是正确的,因为D将会有两个A的实例。 - IdeaHat
1
如果通过class B : public virtual A {}进行虚拟继承,则不会出现A的两个实例。 - Okkenator
在Ubuntu 18.04.3上,使用doxygen/doxywizard 1.8.13,我遇到了“内置类图生成器”的相同问题。如果我使用dot(即graphviz(dot)版本2.40.1)来生成图表,则可以获得正确的菱形,但是我会失去阴影/虚线轮廓,这表明最顶层的类已被虚拟继承。非常烦人。 - badfd
1个回答

3
如果将HAVE_DOT标签设置为YES,那么doxygen将假定dot工具在路径中可用。该工具是Graphviz的一部分(参见:http://www.graphviz.org/),这是AT&T和Lucent Bell Labs的图形可视化工具包。如果将此选项设置为NO,则此部分中的其他选项无效。默认值为:NO。
设置为:

HAVE_DOT = YES


1
值得一提的是,如果您在Ubuntu上没有安装'dot',通过执行sudo apt-get install graphviz即可轻松解决。 - dwanderson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接