`
zsxxsz
  • 浏览: 444563 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

doxygen 帮助手册生成使用心得

阅读更多
   程序员在写程序时经常需要在源程序里写一些注释,以备自己或他人以后再看时方便理解,程序的注释格式有多种,而 JavaDoc 的注释格式现在似乎更为流行,不仅 Java 语言在使用它,其它语言如:Javascript, C/C++, Php 等流程语言也越来多地采用 JavaDoc 注释方式。有了注释格式,当然需要有一个注释格式分析工具能够对注释内容进行清晰。Doxygen 便是这个方便的注释分析工具,它可以非常方便地将源程序里的按 JavaDoc 格式注释的内容提取出来,形成各种需要的帮助手册(如:Html格式,Man 格式,RTF格式等),因为doxygen是如此好用,以至于很多开源的软件都在用它,象比较著名的ACE项目的接口帮助手册就是由doxygen生成的,当然还有更多的使用doxygen工具的项目(你可以在  http://www.stack.nl/~dimitri/doxygen/projects.html 上发现如此多的软件项目在使用它)。
  因为本人开发了一套基于C语言的支持 Unix/Windows 的网络通信及服务器框架的函数库(名叫:ACL,http://acl.sourceforge.net/),有一些朋友和同事在用它,大家在使用ACL 库时既感到了它的强大、高效,同时又在不断地抱怨接口文档的缺乏及查找的不方便,本人对此也深感痛觉,于是痛下决心,经过相当一段时间的努力,终于在 ACL的所有对外头文件中添加了 JavaDoc 格式注释,于是非常高兴地从 doxygen 的主站(www.doxygen.org)下载了win32平台的安装程序(版本为:1.5.8),然后按使用说明(其实非常简单)将ACL的头文件生成了HTML格式帮助文档,但可惜的是,打开这些HTML页面时却发现是一大堆乱码,原因是doxygen生成的文档默认采用 utf-8编码,而我的文档注释采用的是GB2312的编码,于是修改 doxyen配置,将 INPUT_ENCODING 修改成 GB2312, 将 DOXYFILE_ENCODING 设置成 UTF-8,然后再生成时 doxygen 在分析头文件时报错说无法进行编码转换,既然 doxygen 无法进行编码转换,那只好自己写个转换器了,于是亲手写了个WINDOWS下的编码转换器,将GB2312直接转换成UTF-8, 再由 doxygen 从 UTF-8 的源文件生成UTF-8格式的HTML文档。
  至于将ACL的头文件由GB2312转换成UTF-8的过程也是曲折的,开始本人用的转换器的库是 iconv.lib, 转换完发现文件的内容总是不全,不知是不是该库本身的问题还是本人使用不当造成的,于是一不做,二不休,编码转换库也用源代码进行编译运行(好在本人曾经做过邮件系统,在字符集编码方面不乏源代码,随手粘来一段代码贴在程序里),OK,转换成功,所有的头文件的中文注释均由原来的GB2312转换成 UTF-8了。当然在用 doxygen 生成HTML文档时,别忘了将 INPUT_ENCODING 设置成空,意思是说无需 doxygen进行字符集编码转换(通过跟踪 doxygen 的源代码,发现只要将 INPUT_ENCODING 设置为空,则它不会对注释文档进行字符集编码转换---这样也好,免得它总是转错,其实它的源程序里是用 iconv.lib 进行转换的,不知转换不成功的原因是否也与 iconv.lib 有关)。
  其实, doxygen 在对中文的字符集转换时所出现的问题在以前的旧的版本并未出现过(那是因为原来还比较土,根本就不进行转换,哈,看来少做有时也有好处,至少还能用),只是在一些比较新的版本(包括当前的1.5.8)都存在这类问题(将中文由GB2312转换成UTF-8时会失败),本人本想采用旧的 doxygen 生成HTML帮助文档,但最终经不住新版的诱惑:更好的CSS控制,更优美的外观,更方便的索引方式,等等。于是自写了个工具软件,进行了字符集转换。(如哪位朋友需要,可以发邮件至 zhengshuxin@hexun.com 索取这个小软件,等本人将其做完善后再放在网上)。
  字符集转码工作做完了,但另一个问题又出现了,本人的函数库都是由C语言完成的,因为没有象C++式的命名空间,所以为了防止与他人的代码冲突,所有的函数名前都加了前缀 acl_, 所有的结构前都加了前缀 ACL_, 这样问题就来了,本来用 doxygen 生成的HTML文档是有按字母索引、排序功能的,但因为我的函数前都有 acl_ 字样,这样所有的函数都堆在一个 a 开头的排序里,于是更加郁闷。怎么办?得,还得自己写工具进行转换,第一步:先用工具将所有中文注释的头文件转换成UTF-8格式的;第二步:将函数名前的前缀 acl_ 转换成后缀 _acl(如:原来的一个函数 acl_vstream_gets 前缀变后缀后应为 vstream_gets_acl, 结构:ACL_VSTREAM 则变为 VSTREAM_ACL);第三步:用 doxygen 将第二步生成的头文件生成HTML文档;第四步:用自写工具将函数名、结构类型中的字符串由后缀转前缀(如:vstream_gets_acl->acl_vstream_gets, VSTREAM_ACL->ACL_VSTREAM),这样就一切OK了,最终生成的HTML帮助文档都是UTF-8格式的,可以按字母序进行排列的函数接口帮助文档了。(题外话:象顶顶大名的 glib 库,虽然文档注释格式是 JavaDoc 格式的,但它并没有使用 doxygen 工具生成帮助手册,估计原因可能和我一样,它是一个C库,为了避免与别人冲突,都有前缀g-, 如果用 doxygen就无法按首字母进行排序查看,所以 glib 的开发小组自己开发文档生成工具)。
  您可以参看 http://acl.sourceforge.net/ 看一下ACL库的在线帮助文档。
  此外,此文档还有一个小小的缺陷,那就是在搜索栏里,如果你要查acl_vstream_xxx 类的函数时,需要输入 vstream_xxx, 而不是 acl_vstream_xxx, 并且查得的结果也是 vstream_xxx_acl 格式(当你点其链接时的结果是正确的),主要是因为 doxgen 生成ACL帮助文档的全文索引时的源文档都是 vstream_xxx_acl ---即以 _acl/_ACL 为后缀的,目前主要是对其索引文档还不太熟悉,得有时间再完善这点吧。当然,希望 doxygen 能将我所遇到的问题都解决,这样也就不再需要那个转换工具了。
个人微博:http://weibo.com/zsxxsz
分享到:
评论

相关推荐

    doxygen官方手册1.8_中文手册1.6_doxygen使用详解.rar

    doxygen_manual-1.8.13.pdf doxygen中文手册v1.63.pdf doxygen使用详解.pdf

    doxygen帮助文档生成工具

    doxygen帮助文档生成工具,c++、java可以使用相同注释规范,然后生成帮助文档

    Doxygen中文手册

     1,它能从一系列源文件中生成在线浏览文档(HTML形式)或离线参考手册(LATEX形式)。还支持RTF(MS-Word),PostScript,带超链接的PDF,压缩的HTML和Unix man页。文档是直接从源文件中提取出来的,这使得文档与...

    程序文档自动生成工具Doxygen使用手册

    可自动自动生成C/C++,Java,C#开发文档. 类说明,函数说明,类继承关系图.

    doxygen 1.63 中文手册

    包含以下内容: doxygen 1.63 中文手册 doxygen_manual-1.7.1.pdf doxygen-1.7.1-setup-win.exe doxygen-1.7.1.src.tar.gz doxygen使用详解.pdf

    doxygen中文手册v1.63.pdf

    文档中以中文详细介绍了Doxygen设置中每个选项的意义,方便了Doxygen软件的使用,而且还包含了注释关键字的使用方法,手动添加书签,很具有参考价值。

    doxygen中文手册与源码

    为了方便下载与学习,打包了doxygen的源码压缩包与相关中文手册。注:手册仅仅是对官方文档的翻译,英文足够直接阅读原文的小伙伴可直接阅读原文学习。

    doxygen手册

    doxygen官方手册, csdn是怎么了, 为毛所有的资源都要积分.

    doxygen中文手册

    Doxygen 是一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件。Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的...

    Doxygen 安装使用说明

    Doxygen中文手册 Doxygen安装使用说明 Doxygen安装文档 类图Doxygen生成中文说明

    doxygen代码文档生成工具

    可以按照doxygen规定的格式编写代码注释,然后利用doxygen工具直接生成参考文档

    Doxygen代码文档生成工具

    Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持...Doxgen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册。

    doxygen套件(代码自动生成工具)

    doxygen代码自动生成工具的使用说明。doxygen套件程序。还有一个例子项目。

    Doxygen 文档生成工具

    Doxygen 文档生成 跨语言 按照良好的代码注释规则 文档轻松可见。

    使用 doxygen 生成 chm 文档

    详细介绍doxygen各种注释标准、方法,并生成chm的过程

    doxygen1.6.1文档生成工具

    Doxygen, 大名鼎鼎的文档生成工具,被Boost、OpenCasCade等诸多项目作为文档生成的不二人选。

    Doxygen简介及使用说明.pdf

    doxygen的安装使用说明,如何注释文件,类,变量,函数并生成多种格式的接口文档。

    doxygen官方最新手册chm格式

    Doxygen是一种开源跨平台的,以类似...Doxygen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册。该文档介绍了Markdown相关语法,对于自己通过Markdown工具编写漂亮的文档比较有帮助

    doxygen配置及使用手册

    Doxygen可以从C,C++, java等源代码中提取消息来生成帮助文档, API资料等

Global site tag (gtag.js) - Google Analytics