超酷!!!成功使用doxygen+Graphviz+HtmlHelp 自动生成函数调用关系图

发布时间:2026/10/11 3:57:38

超酷!!!成功使用doxygen+Graphviz+HtmlHelp 自动生成函数调用关系图 使用DoxygenGraphvizHtmlHelp生成函数调用关系图在写这篇博客之前首先感谢一下另外一篇博主的文章Windows平台下DoxygenGraphVizHtmlHelp自动生成函数调用关系图。附上原文链接Windows平台下DoxygenGraphVizHtmlHelp自动生成函数调用关系图-CSDN博客本文档不去讲怎么搭建环境基本上按照上面博主说的默认一步步安装即可没有什么特别好说的。然后就是具体使用工具的时候了一开始也碰到了一些问题就是DOT环境路径没配还有工程源码路径有中文或者路径写法不对导致最后一步生成的时候要么灰色无法操作要么生成有问题仔细一点最终还是可以生成想要的东西为了避免大家走弯路这里我把详细的操作步骤一一展示出来。操作步骤1. 安装好 Doxygen GraphViz HtmlHelp 环境略参考上面链接2. 下载一个工程源码这里我选择了一个以前做的CANopen工程为例大家也可以使用其他工程总体步骤是一样的我的工程源码的路径为分享基于stm32f103zet6实现的CANopen例程-OpenEdv-开源电子网3. 使用doxygen 生成工程的帮助文档打开Doxywizard 应用程序按照下面的步骤一步步配置生成3.1 指定doxygen 工作空间源码路径生成路径3.2 指定源码输出模式就是工程主要使用的语言这里我的CANopen工程使用的C语言3.3 选择输出文件的格式3.4 选择是否使用生成图表的软件包3.5 编译的设置3.6 输出的设置注意Dot的路径一定要设置对3.7 开始编译生成html帮助文档3.8 耐心等待几分钟大功告成点击 “Show HTML output” 打开生成的HTML帮助文档下面贴出生成的HTML帮助文档的效果图大家简单欣赏下是不是很激动^_^为什么这么说呢因为使用这种方式可以帮助我们快速查看一个工程源码的数据关系结构以及互相之间的调用关系图如果我们在编码的时候遵从doxygen的标准规范甚至将会很快就能自动制作一个针对源码的帮助文档对程序员来说这个功能非常棒能够加速我们对源码的理解和认识的深度。更多关系结构图就不一一展示了自己去生成一个然后慢慢研究吧祝好运。
延伸阅读

更多相关文章

2026/10/11 3:57:38

ViT小数据微调猫狗分类实战:避开5大参数坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 5:02:42

国产CAD软件哪个上手快?应届生适配参考

刚接触CAD的新手,打开软件后常面对这样的场景:工具栏、命令行、图层管理器都在眼前,却不知道先点哪个;想画一条直线,找不到命令入口;看到别人的图纸里图层、标注、块井井有条,自己却不知道从何建…

2026/10/11 5:02:42

MindSpore并行训练Loss剧烈波动?梯度同步排查指南

做MindSpore并行训练的小伙伴丢给我一段运行日志,日志里别的都正常,唯独Loss曲线刺眼:10个step里,从0.25抖到1.56,来回跳,就像踩了弹簧。这种波动绝对不是正常训练该有的样子——如果你也在MindSpore并行训…

2026/10/11 5:02:42

为Claude Code接入Google搜索MCP:破解AI知识过期问题的实战指南

最近一个月我几乎每天都要在 Claude Code 里处理代码任务,最难受的不是模型理解不了需求,而是它的知识停在某个训练截止日期之前——遇到新发布的框架版本、刚出现的报错、昨天才更新的文档,它只能靠猜。试了几种思路之后,我最终把…

2026/10/11 5:02:42

GitHub Issue智能分诊系统:构建人机协同的开源协作过滤网

1. 为什么 Issue 分诊是开发者团队里最沉默的“时间黑洞”你有没有过这样的经历:周一早上打开 GitHub,收件箱里躺着 27 条新 Issue——其中 8 条是用户把 README 拉到底都没点开就直接问“怎么安装”;5 条是复制粘贴了报错日志但没附任何复现…

2026/10/11 5:02:42

YOLO26涨点改进 | 独家创新,特殊场景检测篇 | TGRS 2025 | 引入FAENet特征自适应增强网络、频域分层自适应修复、专项攻克低光/雾天/雨雪/沙尘复杂退化、恶劣天气特征自适应还原增

目录 一、研究背景与YOLO26恶劣场景检测核心缺陷 二、FAENet特征自适应增强网络核心创新原理 2.1 FAENet五大核心单元架构详解 2.1.1 多尺度频域分层分解单元(基础核心) 2.1.2 场景自适应判别单元(核心创新) 2.1.3 低频全局修复单元(RFEM) 2.1.4 高频细节补强单元…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑