doxygen VIM文档实用指南for CCliked Programmers.docx
- 文档编号:28434610
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:11
- 大小:20.29KB
doxygen VIM文档实用指南for CCliked Programmers.docx
《doxygen VIM文档实用指南for CCliked Programmers.docx》由会员分享,可在线阅读,更多相关《doxygen VIM文档实用指南for CCliked Programmers.docx(11页珍藏版)》请在冰豆网上搜索。
doxygenVIM文档实用指南forCClikedProgrammers
doxygen+VIM文档实用指南forCC-likedProgrammers
关键字:
doxygenvimdoxygentoolkitchmdotlexCLanuageScanner
补充:
本文一开始是为dylan同学准备的,后来有所扩展。
本文不涉及doxygen注释的具体做法,因为可以在网上得到更多关于这方面的范例和资料。
什么是doxygen
什么是VIM
为什么要使用doxygen+VIM
需要做什么?
1)准备工作
2)添加注释
3)配置并运行doxygen
4)编译成chm
5)一些配置选项
Dot图形扩展
doxygen方便扩展吗?
小结
doxygen是一个十分好用的自由软件,是一种文档生成器,其工作机制是利用注释中的有效信息来自动生成文档。
目前doxygen的最新版是(1.5.1),从http:
//www.doxygen.org上可以下载最新版的doxygen。
1.5.1版的doxygen可处理的语言包括:
lC/C++
lJava
lPython
lPHP
lObjective-C
lIDL(Corba,Microsoft及KDE-DCOP类型)
lC#
lD
它支持以下文档格式:
lHTML
lXML
lLaTeX
lRTF
lUnixManPage
有了doxygen的支持后,从软件代码到项目文档的转化十分简单,直接执行doxygen可执行程序就可以了。
此时doxygen会在当前目录下寻找默认的配置文Doxyfile(此文件可以手工编写,也可以借助于doxywizard生成),并从配置文件中读入待解析的文件列表和一些设置,最后生成相应格式的文档。
而你所需要做的唯一工作,就是在软件代码中添加doxygen能够识别的注释。
也就是说,只要在编辑代码的时候遵从doxygen的规范来添加注释,就毫不费劲地生成程序文档了。
和其他的一些注释工具相比,doxygen的优势在于它支持众多的文件类型,并能够生成十分漂亮的网页。
一个典型的doxygen文档包含文件列表,函数列表,全局变量列表,结构体列表,为读者提供全局的信息。
doxygen的自带的tag工具还可以帮助生成交叉索引,方便从一个函数跳转到另一个函数。
这对于了解整个项目的结构和接口以及调用关系是十分有益的。
多说无益,下面给一个简单的范例,看看doxygen是如何工作的。
(此部分代码也是用doxygen生成的)
00001/**
00002*@fileshow.c
00003*@briefwrittentoshowthedoxygendocumentationtool.
00004*@authorClarkZHUO,zkk@
00005*@date2006-11-09
00006*/
00007#include<stdio.h>
00008
00009externvoidprintf(constchar*format,...);
00010externvoidfprintf(FILEf,constchar*format,...);
00011
00012/**
00013*@mainpage
00014*Thepageisshowedtoyou!
00015*
00016*@defgroupmacro
00017*@addtogroupmacro
00018*simplemacro
00019*@{*/
00020/**itisamacro
00021*thedoxygenmergethemessage*/
00022#defineMACRO11
00023/**@}*/
00024
00025/**@defgroupcodes
00026*@addtogroupcodes
00027*codesofthisfunction
00028*@{*/
00029
00030constchar[]msg="Hello,doxygen!
";
00031/**
00032*@brief@binvokejustinvokesomeexample
00033*
00034*@paramafirstparameter
00035*@parambsecondparemeter
00036*@paramoperationselectableparemeter
00037*
00038*@return
00039*-MACRO1ifdefaultoperationiscalled
00040*-0ifaorbis0
00041*--1else
00042*/
00043intinvoke(inta,intb,intoperation=0)
00044{
00045printf(msg);
00046if(operation!
=0){
00047fprintf(2,"justatest.");
00048returnMACRO1;
00049}
00050if((a==0)||(b==0))return0;
00051return-1;
00052}
00053
00054/**
00055*@briefmainthefunctionfortheprogram
00056*
00057*@paramargcargumentcountforstdCmain
00058*@paramargvargumentvalueforstdCmain
00059*
00060*@returnalwaysreturn0toshell
00061*/
00062intmain(intargc,char*argv[])
00063{
00064intval=1;
00065intvalb=2;
00066
00067printf("Programstarts...\n");
00068/**<b>Infunction:
</b>themainfunctioncalledinvoke*/
00069invoke(val,valb);
00070return0;
00071}
00072
00073/**@}*/
说明:
以上例子主要演示了file,function,param,return等常用的doxygen标签,在doxygen帮助的“SpecialCommands”部分列出了所有的标签。
可以注意到,代码中所有的注释都以/**开头,这正是doxygen的一个标记,说明这段注释文本将被doxygen进行解释。
事实上,doxygen同时支持好几种类型的注释风格,包括JavaDoc风格的/***/,QT风格的/*!
*/,和行注释风格的///和//!
。
还可以注意到注释中有很多以@为前缀的语句,这些紧跟在@符号后面的标识符就是doxygen的关键字(也可以用’\\’来替代’@’)。
doxygen通过这些关键字来组织所生成的文档。
例如,@file告诉doxygen后面的字符串是文件的名字,而@date则说明了文件的生成时间。
以下就是所生成的文档中函数列表中关于invoke的部分,效果还不错吧^_^(左侧是index页的模块列表,右侧是函数invoke的文档)
什么是VIM
这个问题就直接跳过了。
作为最有名的编辑器之一,网上有铺天盖地的文章来介绍VIM的各种技巧。
www.vim.org上面也有足够的信息和资源。
你只用IDE?
那你往下看看用VIM能不能给你带来更高的效率,如果值得,不妨只用IDE来编译和调试。
为什么要使用doxygen+VIM
从前文已知,doxygen确实是一种很不错的工具。
但是为了帮助doxygen来生成文档,你需要在注释上花费更多的时间和精力。
通常,这意味着你在写注释的时候需要更集中的注意力,和敲击更多的键盘。
如果既想享受doxygen带来的便利,又不愿意在每次写注释的时候多写一大堆相似的,重复性的东西。
这时候该怎么办呢?
可以使用编辑器插件来最小化自己键入的字符。
作为世界上最著名的两大编辑器之一,VIM拥有众多的fans。
和emacs不同,VIM的迷人之处在于其简约之美和强大的可扩展性。
在随后的部分中我将向大家介绍doxygenToolkit.vim这个插件的基本用法。
在安装这个插件之后,你只需要执行一个简单的操作,就可以完成doxygen风格的注释。
它将使你的编码工作事半功倍。
doxygentoolkit.vim插件可以在www.vim.org上获取。
需要做什么?
以下将简要介绍VIM+doxygen的使用方法:
1)准备工作
安装doxygen,安装gvim,下载doxygentoolkit.vim并将其安装到$VIMRUNTIME/plugin目录下。
之后,需要在VIM的配置文件中(windows下的_vimrc,linux下的vimrc或者~/.vimrc)为doxygentoolkit这个插件配置一些全局变量:
letg:
doxygenToolkit_authorName="yourname"
letg:
doxygenToolkit_briefTag_funcName="yes"
其余的配置可以自己查阅doxygentoolkit的说明。
这样,你就可以通过DoxAuthor,Dox,Doxb等几个命令来完成doxygen风格的文档了。
当然,你可以用VIM的map功能来绑定这几个命令。
我通常采用以下绑定:
map<F3>a:
DoxAuthor
map<F3>f:
Dox
map<F3>b:
DoxBlock
map<F3>cO/***/<Left><Left>
2)添加注释
在添加注释时,最常用的是:
Dox,而每个文件同时也需要:
DoxAuthor来添加文件头。
使用:
Dox命令来为一个函数添加注释十分简单。
你只需要把光标移动到函数声明或者定义所在行(函数原型所在行),然后执行:
Dox就可以了。
Dox会自动解析你的函数原型,并将相应的参数和返回值列出来。
例如,当你对
intinvoke(inta,intb,intoperation=0)
添加注释时,Dox将生成如下代码
/**
*@briefinvoke
*
*@parama
*@paramb
*@paramoperation
*
*@return
*/
并将光标设知道invoke后面,方便你输入函数的简单描述。
:
DoxAuthor则会自动将文件名,作者,时间等关键字自动填好,十分方便。
当然,你也可以按照自己的配置来修改doxygenToolkit.vim。
3)配置并运行doxygen
doxygen的配置文件是一个文本文件,理论上你可以自己来直接修改。
不过还有更省事的方法:
doxygen为我们提供了doxywizard图形配置工具。
doxywizard的功能十分直观,用起来很简单,在此不加赘述。
进行配置之后,将配置文件存到工作目录下,运行doxygen。
默认情况下,doxygen会产生html格式的文档,这些文件都会保存在工作目录的html子目录下面。
之后,可以通过浏览器来打开html子目录下的index.html页面来查看为这个工程生成的文档。
当然,如果你需要生成其他格式的文档,可以进行相应的配置。
doxygen配置文件的细节,我就不一一细述了,你可以去查阅更多的资料J
下图为Windows操作系统下doxygen的图形配置程序doxygenWizard(linux系统下执行doxywizard命令):
4)编译成chm
使用chm格式的文件来作为程序的文档可以使文档更加便于管理,现在也有越来越多的文档用chm格式发布。
doxygen也可以支持编译生成chm格式的文件。
这时候,你需要在doxygen的配置文件里设置以下选项(打开chm的支持,并配置htmlworkshop的位置):
GENERATE_HTMLHELP=YES
HHC_LOCATION="C:
/ProgramFiles/HTMLHelpWorkshop/hhc.exe"(如果hhc已经在系统的路径里,那么此处可以不填)
这样,doxygen在产生文档的时候会同时产生hhp后缀的文件,并自动运行HHC来帮你编译生成CHM的文件。
当然,你也可以在HtmlHelpWorkshop里面用hhp文件来手动chm文件了。
HtmlHelpWorkshop可以在各大软件站点上找到或者去微软的站点上下载:
5)一些配置选项
我比较经常进行更改的doxyfile选项有:
INPUT=.../include项目的路径(用空格隔开,可以用引号括起来)
HIDE_UNDOC_MEMBERS=NO是否需要隐藏未注释的成员
SOURCE_BROWSER=YES是否显示源程序
GENERATE_HTML=YES生成html格式的文档
GENERATE_HTMLHELP=YES生成chm文件
CHM_FILE=show.chmchm文件的名字
HHC_LOCATION="C:
/ProgramFiles/HTMLHelpWorkshop/hhc.exe"hhc的路径
HAVE_DOT=YES支持图形扩展
……
Dot图形扩展
在doxygen的配置中打开DOT选项后,doxygen可以帮你生成十分眩目的图形支持,使项目文档更加直观、易读。
为了能够使用Dot图形扩展,你需要首先安装graphviz,这是一个免费的图形库扩展,可以从http:
//graphviz.org下载。
下载完Dot并安装完毕之后,需要在doxygen文件中将以下选项打开:
HAVE_DOT=YES
进行相关DOT选项的设置之后,就可以生成带图形支持的文档了,这可以让你的文档增色不少。
以下是一个函数调用关系图的范例(这是doxygen项目中的一个函数):
doxygen方便扩展吗?
尽管doxygen已经包含了许多最通用的文件类型的支持,你也许还希望能够让其为你自定义的某种语言生成文档,或者对某个功能进行调整。
这时候,你可以添加一些额外的代码,并将源代码重新编译一遍。
(当然,你也可以让作者添加对新语言的支持并发布新版本,呵呵)
doxygen项目的大部分代码是C++文件,大部分的代码解析工作是在*Scanner类里面进行的(目前包含CLanuageScanner和PythonLanuageScanner,前者处理所有类C的语言类型,后者是1.5新添加的针对python的类)。
这些*Scanner是由lex语法解析器来自动生成的,可以通过修改scanner.l和pyscanner.l这两个文件来修改一些细节的处理。
这些l文件中大量使用了lex的startcondition,使所做修改不会轻易破坏已有的功能,比较方便。
如果你所要添加的这种语言是类C结构的,也许只需要把这个文件类型添加到已有的C语言框架里就可以让一切正常工作。
修改完毕之后,将整个项目重新编译一遍,make程序将自动更新*Scanner类的内容,并将你所做的修改应用到doxygen程序上。
调试之,就大功告成了。
小结
doxygen+VIM+doxygenToolkit.vim+HtmlHelpWorkshop=注释->简单的文档解决方案
doxygen还有众多十分有用的关键字和其它的功能,有兴趣的朋友可以好好去发掘发掘。
doxygen的主页上也有很多很有用的讨论,值得去好好看看。
对lex感兴趣的朋友可以去看看doxygen的scanner.l文件,肯定会有比较大的收获。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- doxygen VIM文档实用指南for CCliked Programmers VIM 文档 实用 指南 for
![提示](https://static.bdocx.com/images/bang_tan.gif)