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

如何使用Doxygen生成源码模块间的依赖关系图?

用Doxygen生成高层模块依赖关系图

要生成你需要的模块级依赖图,必须用@defgroup标记每个模块,这是让Doxygen识别高层模块的核心操作,具体步骤如下:

  • 给每个模块定义分组标识
    在每个模块的核心头文件(比如liba/include/liba.h)里添加@defgroup注释,同时用@ingroup把模块下的所有文件关联到这个组:

    // liba的核心头文件示例
    /**
     * @defgroup liba 模块A
     * @brief 提供XXX功能的基础模块
     */
    /**
     * @ingroup liba
     * @file liba.h
     * @brief 模块A的对外接口
     */
    

    模块下的其他源文件/头文件,只需要在文件注释里加@ingroup liba即可,不需要重复定义@defgroup。

  • 配置Doxygen启用模块图生成
    打开你的Doxygen配置文件(通常是Doxyfile),确保以下选项正确设置:

    HAVE_DOT = YES          # 必须开启,依赖Graphviz的Dot工具
    MODULE_GRAPH = YES      # 开启模块依赖图生成
    INCLUDE_GRAPH = NO      # 若只关注模块级依赖,可关闭文件包含图
    DOT_GRAPH_MAX_NODES = 50# 根据你的模块数量调整,防止图过于复杂
    
  • 自动/手动补全依赖关系
    Doxygen会自动识别模块间的依赖(比如liba的文件包含了libcommon的头文件,就会自动生成liba -> libcommon的依赖关系)。如果某些依赖没被自动识别(比如间接依赖或非头文件依赖),可以在模块的@defgroup注释里手动添加@depends标记:

    /**
     * @defgroup app 应用模块
     * @brief 项目主应用模块
     * @depends liba
     * @depends libb
     */
    

按照上述步骤配置后,Doxygen就能生成你期望的菱形结构模块依赖图:app依赖liba和libb,liba、libb都依赖libcommon。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:32:25