如何使用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
相关产品推荐
相关产品推荐

