You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Sphinx为C++类及项目添加UML类图

解决方案步骤

1. 配置Doxygen生成UML所需的Dot图数据

你可以直接修改Doxyfile,或者在CMakeLists.txt中配置Doxygen参数(推荐,适配你的cmake构建流程):
如果是CMake配置的话,添加如下Doxygen参数:

set(DOXYGEN_HAVE_DOT YES)
set(DOXYGEN_CLASS_DIAGRAMS YES)
set(DOXYGEN_UML_LOOK YES) # 生成标准UML样式的类图
set(DOXYGEN_HIDE_UNDOC_RELATIONS NO)
set(DOXYGEN_DOT_GRAPH_MAX_NODES 100) # 避免类关系复杂时图被截断

如果是手动改Doxyfile,就把对应参数改成上述值即可。

2. 补充conf.py配置

你现有的扩展已经包含所需依赖,只需要补充breathe基础配置(如果没加的话):

# 替换为你自己的项目名和doxygen生成的xml文件夹路径
breathe_projects = {
    "CatCutifier": "../doxygen/xml" # 路径是相对于conf.py所在目录的路径
}
breathe_default_project = "CatCutifier"
# 指定C++文件对应的域
breathe_domain_by_extension = {"h": "cpp", "cpp": "cpp"}

# 可选:如果系统graphviz的dot命令不在PATH中,手动指定路径
# import os
# os.environ["GRAPHVIZ_DOT"] = "/usr/bin/dot" # 替换为你自己的dot可执行文件路径

3. 修改index.rst添加生成UML的指令

有两种常用的UML图可以选择,可按需添加:

方式1:每个类单独生成完整UML图(包含成员属性、方法)

在已有的doxygenclass指令中添加:allow-dot-graphs:参数即可,修改后示例:

.. doxygenclass:: Base_A
   :members:
   :private-members:
   :allow-dot-graphs:

.. doxygenclass:: Child_A
   :members:
   :private-members:
   :allow-dot-graphs:

方式2:生成全局类继承关系图

在index.rst的合适位置(比如Docs章节的开头)添加inheritance-diagram指令,指定你要展示的C++类:

.. inheritance-diagram:: cpp:Base_A cpp:Child_A
   :parts: 2 # 2代表展示类名+成员,1代表仅展示类名,可按需调整

4. 安装依赖并重新构建

  • 确保你的系统已经安装了graphviz:
    • Debian/Ubuntu:sudo apt install graphviz
    • macOS:brew install graphviz
    • Windows:下载安装graphviz后,把dot.exe所在目录添加到系统PATH
  • 回到/project/build目录执行cmake .. && make即可生成带UML图的文档。

内容的提问来源于stack exchange,提问作者karim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:54:03