如何使用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
- Debian/Ubuntu:
- 回到
/project/build目录执行cmake .. && make即可生成带UML图的文档。
内容的提问来源于stack exchange,提问作者karim
相关产品推荐
相关产品推荐

