免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 832 | 回复: 0
打印 上一主题 下一主题

使用 Doxygen 制作 C 程序文档 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-07 09:43 |只看该作者 |倒序浏览

使用 Doxygen 制作 C 程序文档
LiYanrui posted @ 10 个月前 in 程序设计 with tags c doxygen , 1827 阅读
Cairo 绘图指南 (2) —— Cairo 概念
目前,网上所能搜到 Doxygen 资料,大都是介绍 C++ 程序文档生成的,对于 C 程序的文档生成鲜有记述。由于我们的项目主要是采用 C 语言实现,这两天在学习使用 Doxygen 制作 C 程序文档时,摸索了一点东西出来,记之备忘。
关于 Doxygen

们在写程序时,通常会在源码中适当之处添加合理的注释,以此来说明代码所能实现的功能、使用约定等信息。如果在撰写代码注释时,能够稍微遵从某种格式,然
后采用某种工具,根据源码结构及注释自动生成排版美观的文档,这将大大减轻我们的工作量,使我们多一些时间享受生命。 Doxygen
就是这样一种工具。
关于 Doxygen 更为详尽的介绍,请阅读其官方主页。
安装 Doxygen
几乎所有的 GNU/Linux 发行版的软件仓库中都可以找到 Doxygen,有些发行版默认已经安装,安装前请检查一下。

果你打算在 Windows 环境中使用 Doxygen,我会劝说你删除 Windows -> 安装一个 GNU/Linux ->
安装 Doxygen,如果你非要坚持在 Windows 环境中使用 Doxygen,那我只好告诉你:去 Doxygen 官方网站 下载一个
Win 版本的 Doxygen,然后双击所下载的安装文件,然后 Next … Next …
Doxygen 的工作过程
Doxygen 的工作过程可分为三个步骤:
配置 Doxygen 工作环境,生成 Doxygen 配置文件;
在程序源码中添加符合 Doxygen 可解析的注释格式;
使用 Doxygen 解析源码,输出格式化文档。
在 Doxygen 手册页上可以看到一份很详细的 Doxgen 工作流程图。对于我而言,仅仅需要 Doxygen 完成以下流程即可满足我的需求。

从一个具体而微的示例开始
为了更好的学习 Doxygen,构造了一个很小型的“项目”,为了叙述的方便,给它取个名字——“M2 List”,其内容是我从我们的项目中的双向链表模块抽取出来的。
M2 List 项目的目录结构如下图所示:
m2-list
    |---- src
    |      |
    |      |---- m2.h
    |      |---- m2-list.h
    |      |---- m2-list.c
    |
    |---- lib
    |
    |---- doc
    |
    |---- example
           |
           |---- test.c
M2 List 程序目录为 m2-list,src 目录用于放置程序源文档,example 用于放置测试程序,lib 用于放置最终生成的 M2 List 共享库文件。
下面讲述如何使用 Doxygen 为 M2 List 项目生成文档。
Step 1: 配置 Doxygen 工作环境
Doxygen 工作环境的配置貌似非常复杂,配置文件中的选项有数百项之多,不过其中的绝大多数不需理会,采用 Doxygen 配置文件模板中定义的默认值即可。
进入 m2-list 目录,使用 "doxygen -g" 命令生成 Doxygen 配置文件模板:
$ cd    yourpath/m2-list
$ doxygen   -g
默认生成的配置文件名为 "Doxyfile",也可以采用 "doxygen -g your-cfg-filename" 命令格式指定所生成的配置文件名。如无特殊需要,采用默认的配置文件名即可。
Doxyfile
文件内容非常多,大概 1000 多行,不过其中约 4/5 都是注释,每个配置选项都有一段详细的注释。日后,如果对 Doxygen
各配置选项的意义有一定了解,可以在生成配置文件的命令中添加 "-s" 选项,生成不含注释的配置文件,操作如下:
$ doxygen    -s    -g
为实现本文目的,对默认生成的 Doxygen 配置文件需要有针对性的调整,使之适于 C 程序文档生成。下面给出我认为重要的几个配置选项及相应设置:
# 项目名称,将作为于所生成的程序文档首页标题
PROJECT_NAME           = “M2 List”
# 文档版本号,可对应于项目版本号,譬如 svn、cvs 所生成的项目版本号
PROJECT_NUMBER       = "1.0.0"
# 程序文档输出目录
OUTPUT_DIRECTORY    =  doc/
# 程序文档语言环境
OUTPUT_LANGUAGE    = Chinese
# 如果是制作 C 程序文档,该选项必须设为 YES,否则默认生成 C++ 文档格式
OPTIMIZE_OUTPUT_FOR_C  = YES
# 对于使用 typedef 定义的结构体、枚举、联合等数据类型,只按照 typedef 定义的类型名进行文档化
TYPEDEF_HIDES_STRUCT   = YES
# 在 C++ 程序文档中,该值可以设置为 NO,而在 C 程序文档中,由于 C 语言没有所谓的域/名字空间这样的概念,所以此处设置为 YES
HIDE_SCOPE_NAMES        = YES
# 让 doxygen 静悄悄地为你生成文档,只有出现警告或错误时,才在终端输出提示信息
QUIET   = YES
# 只对头文件中的文档化信息生成程序文档
FILE_PATTERNS          = *.h
# 递归遍历当前目录的子目录,寻找被文档化的程序源文件
RECURSIVE              = YES
# 示例程序目录
EXAMPLE_PATH           = example/
# 示例程序的头文档 (.h 文件) 与实现文档 (.c 文件) 都作为程序文档化对象
EXAMPLE_PATTERNS       = *.c \
                                          *.h
# 递归遍历示例程序目录的子目录,寻找被文档化的程序源文件
EXAMPLE_RECURSIVE      = YES
# 允许程序文档中显示本文档化的函数相互调用关系
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION    = YES
REFERENCES_LINK_SOURCE = YES
# 不生成 latex 格式的程序文档
GENERATE_LATEX         = NO
# 在程序文档中允许以图例形式显示函数调用关系,前提是你已经安装了 graphviz 软件包
HAVE_DOT               = YES
CALL_GRAPH            = YES
CALLER_GRAPH        = YES
可以下载我的配置文档作为参考: My Doxyfile。
欲详知 Doxygen 各配置选项的作用,请阅读 doxygen 手册中的 config.html 页面 (通常位于 /usr/share/doc/doxygen*/html/config.html)。
Step 2: 程序源码文档化
准备好 Doxygen 的工作环境后,就需要根据 Doxygen 所定义的注释规则,对程序源码进行文档化。换句话说,就是在对程序源码添加注释时,要按照 Doxygen 的游戏规则来搞。
Doxygen 的注释类型可分为:
行间注释:注释语句不与程序源码出现在同一行,主要用于注释头文件中出现的结构体 (struct)、枚举 (enum)、联合 (uion) 等数据类型,以及程序接口的功能与使用约定;
行内注释:注释语句与程序源码出现在同一行内,主要用于代码的局部注释。
Doxygen 认可的行间注释标记见下例:
/*!
* 这是行间注释标记示例
*/
Doxygen 认可的行内注释标记见下例:
typedef struct {
        double coord[3];     /*!html 页面,阅读下面的示例文档,它们都是 .h 文件。当然,在 .c 文件中也允许出现注释,但我认为它们不应该出现在程序文档中,使用 C 语言最重要的一个原则就是:.h 文件是用来声明的,类似于文章的目录或索引;而 .c 文件是用来实现的,类似文章的正文。
我的文档化后的程序源码:m2.h 下载|m2-list.h 下载。
Step 3: 程序文档生成
现在开始生成程序文档,将终端的工作目录定位在 m2-list 目录,然后键入:
$ doxygen    your-cfg-filename
your-cfg-filename 是 Step 1 中生成的 Doxygen 配置文件名,如果是使用 "doxygen -g" 生成的配置文件——Doxyfile,那么可以在终端里仅键入 "doxygen" 命令即可生成程序文档。
生成的文档位于 m2-list/doc/html 目录中,使用浏览器打开该目录中的 index.html 文件,即可看到自己的工作成果。
小结

文仅仅是个很小很小的开始,许多我很想说的东西,由于拙于 & 懒于表达,都没有讲出来。如果这篇文章能够引起你对 Doxygen
的兴趣,并尝试在工作中使用它,我就心满意足了。实际上,Doxygen
给我的帮助不仅仅是生成程序文档,更重要的是它提示我应该怎样对程序进行良好的注释!
最后,要感谢 Doxygen 的开发者,说中文也许你们听不懂,那我 say 一句 “tks a lot”.
http://liyanrui.is-programmer.com/2008/4/15/using-doxygen-for-c.2281.html
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/64985/showart_1987941.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP