Skip to content

要使用 Doxygen 生成类图,核心是安装 Doxygen 与 Graphviz 工具,并进行正确的配置。以下是基于多个技术博客和问答总结出的详细步骤与关键配置。

一、 准备工作:安装必要工具

首先,你需要在你的操作系统上安装 Doxygen 和 Graphviz。Graphviz 的 dot 工具是 Doxygen 生成高质量UML图所依赖的。

  • Linux (Ubuntu/Debian):可以使用包管理器快速安装。
sudo apt install graphviz doxygen
  • 其他系统:可以从 Doxygen 官网和 Graphviz 官网下载安装包,或者通过其他包管理器(如 macOS 的 Homebrew)安装。安装后,请确保 dot 命令可在系统路径中被访问。

二、 生成与配置 Doxygen 文件

在你的 C++ 项目根目录下,执行以下命令生成默认配置文件:

doxygen -g

这会生成一个名为 Doxyfile 的配置文件。你需要编辑此文件,启用一系列关键选项以生成类图。

以下是必须或推荐启用的核心配置项及其作用:

配置项 建议值 作用说明
EXTRACT_ALL YES 提取所有实体(包括未注释的),确保生成完整的类图。
HAVE_DOT YES 启用 Graphviz dot 工具,这是生成所有图表的基础。
UML_LOOK YES 使生成的类图具有标准的 UML 风格外观,更专业。
CLASS_DIAGRAMS YES 为有基类或派生类的类生成类图。
CLASS_GRAPH YES 生成类的继承关系图(Inheritance Diagram)。
COLLABORATION_GRAPH YES 生成类的协作关系图(Collaboration Diagram),展示类之间的使用关系。
RECURSIVE YES 递归处理子目录,扫描整个项目。

三、 高级与优化配置(可选)

为了获得更好效果或控制输出,你还可以调整以下选项:

  1. 控制图表细节与规模

    • UML_LIMIT_NUM_FIELDS:限制每个类节点中显示的字段和方法数量,防止图表过大(默认10)。
    • DOT_UML_DETAILS:设置为 YES 会在UML图中显示成员的类型和参数,NO则只显示名称。
    • DOT_GRAPH_MAX_NODES 和 MAX_DOT_GRAPH_DEPTH:控制图的最大节点数和深度,对于大型项目可避免生成过于庞大的图,影响性能与可读性。
  2. 提升输出质量

    • DOT_IMAGE_FORMAT:设置为 svg 可以生成可缩放矢量图,比默认的 png 位图更清晰。
    • INTERACTIVE_SVG:设置为 YES 可在支持SVG的浏览器中实现图表的交互式缩放与平移。

四、 生成文档与查看类图

配置完成后,在项目根目录运行命令执行生成过程:

doxygen

Doxygen 会解析你的源代码,并在当前目录下生成 html/ 和 latex/ 两个输出目录。打开 html/index.html,通过导航即可查看生成的类图。类图通常嵌入在各个类的文档页面中。

总结与建议

Doxygen + Graphviz 是生成C++项目类图最常用且成本低廉的方案。其成功的关键在于正确配置 HAVE_DOT=YES 和 UML_LOOK=YES 等核心选项。对于复杂项目,合理使用 DOT_GRAPH_MAX_NODES 等限制性参数可以有效平衡图表的完整性与可读性。

提供一份生成类图的Doxyfile 的配置文件

searchModel

ima

引用 6 篇资料作为参考

根据您的需求,我为您整理了一份专门用于生成高质量类图的Doxygen配置文件(Doxyfile)模板。该模板综合了多个来源的最佳实践,并针对类图生成进行了优化配置。

一、核心配置:启用类图生成功能

要生成类图,必须正确配置以下关键选项。这些设置是Doxygen与Graphviz协同工作的基础。

# 项目基本信息
PROJECT_NAME           = "My Project"
PROJECT_BRIEF          = "项目简要描述"
PROJECT_NUMBER         = 1.0
OUTPUT_DIRECTORY       = ./docs
CREATE_SUBDIRS         = YES

# 输入文件设置
INPUT                  = .
FILE_PATTERNS          = *.cpp *.h *.hpp *.cxx *.hxx
RECURSIVE              = YES

# 文档提取设置
EXTRACT_ALL            = YES
EXTRACT_PRIVATE        = YES
EXTRACT_STATIC         = YES
EXTRACT_LOCAL_CLASSES  = YES
HIDE_UNDOC_RELATIONS   = NO

二、类图生成专用配置

以下是专门针对UML类图生成的配置部分,这些设置将确保生成完整的继承和协作关系图。

# ============================================
# 类图与图表生成配置
# ============================================

# 启用Graphviz支持(必需)
HAVE_DOT               = YES

# 类图相关设置
CLASS_DIAGRAMS         = YES
CLASS_GRAPH            = YES
COLLABORATION_GRAPH    = YES
TEMPLATE_RELATIONS     = YES

# UML风格设置
UML_LOOK               = YES
UML_LIMIT_NUM_FIELDS   = 50
DOT_UML_DETAILS        = YES

# 图表规模控制
DOT_GRAPH_MAX_NODES    = 100
MAX_DOT_GRAPH_DEPTH    = 0
DOT_IMAGE_FORMAT       = svg
INTERACTIVE_SVG        = YES
DOT_TRANSPARENT        = YES

三、输出格式与优化配置

为了获得更好的文档体验,建议配置以下输出选项。

# 输出格式设置
GENERATE_HTML          = YES
GENERATE_LATEX         = NO
GENERATE_TREEVIEW      = ALL
HTML_DYNAMIC_SECTIONS  = YES

# 源代码浏览
SOURCE_BROWSER         = YES
INLINE_SOURCES         = NO

# 搜索功能
SEARCHENGINE           = YES
SERVER_BASED_SEARCH    = NO

# 编码设置
DOXYFILE_ENCODING      = UTF-8
OUTPUT_LANGUAGE        = Chinese

四、Graphviz路径配置(Windows系统特别注意)

如果您在Windows系统上使用,需要正确配置Graphviz的安装路径。

# Windows系统需要设置Graphviz路径
# DOT_PATH              = "C:/Program Files/Graphviz/bin"
# 注意:Linux/macOS系统通常不需要此设置

五、使用说明与注意事项

1. 安装依赖

在使用此配置前,请确保已安装以下软件:

  • Doxygen:文档生成工具
  • Graphviz:图表生成引擎(包含dot工具)

安装命令示例(Ubuntu):

sudo apt install doxygen graphviz

2. 配置文件生成与使用

# 生成默认配置文件
doxygen -g

# 编辑配置文件(将上述配置复制到Doxyfile中)
vim Doxyfile

# 生成文档
doxygen Doxyfile

3. 关键配置项说明

  • HAVE_DOT = YES:启用Graphviz支持,这是生成所有图表的前提条件
  • UML_LOOK = YES:使生成的类图具有标准的UML风格外观
  • CLASS_GRAPHCOLLABORATION_GRAPH:分别控制继承图和协作图的生成
  • DOT_IMAGE_FORMAT = svg:生成矢量图,支持无损缩放
  • UML_LIMIT_NUM_FIELDS:控制每个类节点中显示的字段数量,防止图表过大

4. 性能优化建议

对于大型项目,您可能需要调整以下参数以避免性能问题:

  • 适当降低DOT_GRAPH_MAX_NODES的值
  • 设置MAX_DOT_GRAPH_DEPTH限制图表深度
  • 调整UML_LIMIT_NUM_FIELDS控制类节点的复杂度

六、完整配置文件示例

您可以将以下配置保存为Doxyfile,然后根据您的项目需求进行微调:

# Doxyfile 1.9.8 - 类图生成专用配置

# 项目设置
PROJECT_NAME           = "My Project"
PROJECT_BRIEF          = "使用Doxygen生成类图示例"
PROJECT_NUMBER         = 1.0
OUTPUT_DIRECTORY       = ./docs
CREATE_SUBDIRS         = YES

# 输入设置
INPUT                  = .
FILE_PATTERNS          = *.cpp *.h *.hpp *.cxx *.hxx *.cc *.hh
RECURSIVE              = YES
EXCLUDE_PATTERNS       = */test/* */build/* */cmake-build-*/*

# 提取设置
EXTRACT_ALL            = YES
EXTRACT_PRIVATE        = YES
EXTRACT_STATIC         = YES
EXTRACT_LOCAL_CLASSES  = YES
EXTRACT_LOCAL_METHODS  = YES
HIDE_UNDOC_RELATIONS   = NO
HIDE_UNDOC_MEMBERS     = NO
HIDE_IN_BODY_DOCS      = NO

# 图表生成(核心配置)
HAVE_DOT               = YES
CLASS_DIAGRAMS         = YES
CLASS_GRAPH            = YES
COLLABORATION_GRAPH    = YES
TEMPLATE_RELATIONS     = YES
UML_LOOK               = YES
UML_LIMIT_NUM_FIELDS   = 50
DOT_UML_DETAILS        = YES

# 图表优化
DOT_GRAPH_MAX_NODES    = 100
MAX_DOT_GRAPH_DEPTH    = 0
DOT_IMAGE_FORMAT       = svg
INTERACTIVE_SVG        = YES
DOT_TRANSPARENT        = YES
DOT_MULTI_TARGETS      = YES

# 输出格式
GENERATE_HTML          = YES
GENERATE_LATEX         = NO
GENERATE_TREEVIEW      = ALL
HTML_DYNAMIC_SECTIONS  = YES
SOURCE_BROWSER         = YES
INLINE_SOURCES         = NO

# 搜索与引用
SEARCHENGINE           = YES
SERVER_BASED_SEARCH    = NO
REFERENCES_LINK_SOURCE = YES

# 编码与语言
DOXYFILE_ENCODING      = UTF-8
OUTPUT_LANGUAGE        = Chinese

七、验证与调试

生成文档后,打开./docs/html/index.html查看结果。如果类图没有正确生成,请检查:

  1. Graphviz是否正确安装:在命令行中运行dot -V验证
  2. 路径配置:Windows用户需要正确设置DOT_PATH
  3. 源代码注释:确保类定义有适当的Doxygen注释
  4. 配置项冲突:某些配置项可能有依赖关系,请仔细阅读Doxygen手册

这份配置文件模板综合了多个来源的最佳实践,特别针对类图生成进行了优化。您可以根据具体项目需求调整参数值,如项目名称、输入目录、图表规模限制等。使用此配置,您将能够生成专业、清晰的UML类图文档。

基于 VitePress 构建