Linux下使用doxygen+vim生成c语言源程序文档的方法
1.安装 doxygen
有两种获得 doxygen 的方法。可以下载预编译的可执行文件,也可以从 SVN 存储库下载源代码并自己编译。清单 1 演示的是后一种方法。
清单 1. 安装和构建 doxygen 源代码
bash-2.05$ git clone https://github.com/doxygen/doxygen.git
bash-2.05$ cd doxygen
bash-2.05$ ./configure
bash-2.05$ make
bash-2.05$ make install
2.安装graphviz 软件包
yum list available 'graphviz*'
yum install 'graphviz*'
3.使用 doxygen 生成文档
使用 doxygen 生成源代码的文档步骤:
清单 2. 生成默认的配置文件
bash-2.05b$ doxygen -g
这个命令在当前目录中生成一个可编辑的配置文件Doxyfile。可以改变这个文件名,在这种情况下,应该调用 doxygen -g <user-specified file name>
编辑配置文件
配置文件采用 <TAGNAME> = <VALUE> 这样的结构,与 Make 文件格式相似。下面是最重要的标记:
# 项目名称,将作为于所生成的程序文档首页标题
PROJECT_NAME = “Test”
# 文档版本号,可对应于项目版本号,譬如 svn、cvs 所生成的项目版本号
PROJECT_NUMBER = "1.0.0”
# 这个目录是放置生成的文档文件的位置。如果提供一个不存在的目录名,doxygen 会以这个名称创建具有适当用户权限的目录。
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
# 在默认情况下,doxygen 会搜索具有典型 C/C++ 扩展名的文件,比如 .c、.cc、.cpp、.h 和 .hpp。如果 <FILE_PATTERNS> 标记没有相关联的值,doxygen 就会这样做。如果源代码文件采用不同的命名约定,就应该相应地更新这个标记。例如,如果项目使用 .c86 作为 C 文件扩展名,就应该在 <FILE_PATTERNS> 标记中添加这个扩展名。为空即可
FILE_PATTERNS =
# 递归遍历当前目录的子目录,寻找被文档化的程序源文件
RECURSIVE = YES
# 示例程序目录,填文件路径
EXAMPLE_PATH = example/
# 示例程序的头文档 (.h 文件) 与实现文档 (.c 文件) 都作为程序文档化对象,为空
EXAMPLE_PATTERNS =
# 递归遍历示例程序目录的子目录,寻找被文档化的程序源文件
EXAMPLE_RECURSIVE = YES
#这个标记告诉 doxygen,即使各个类或函数没有文档,也要提取信息。必须把这个标记设置为 Yes。
EXTRACT_ALL = yes
#把这个标记设置为 Yes。否则,文档不包含类的私有数据成员。
EXTRACT_PRIVATE = yes
#把这个标记设置为 Yes。否则,文档不包含文件的静态成员(函数和变量)。
EXTRACT_STATIC = yes
#在这里,doxygen 会从这两个目录读取 C/C++ 源代码。如果项目只有一个源代码根目录,其中有多个子目录,那么只需指定根目录并把 <RECURSIVE> 标记设置为 Yes。
INPUT = /home/user1/project/kernel /home/user1/project/memory
# 允许程序文档中显示本文档化的函数相互调用关系
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
REFERENCES_LINK_SOURCE = YES
# 在程序文档中允许以图例形式显示函数调用关系,前提是你已经安装了 graphviz 软件包
UML_LOOK = YES
HAVE_DOT = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES
#让doxygen从配置文件所在的文件夹开始,递归地搜索所有的子目录及源文件
RECURSIVE = YES
#在最后生成的文档中,把所有的源代码包含在其中
SOURCE BROWSER = YES
$这会在HTML文档中,添加一个侧边栏,并以树状结构显示包、类、接口等的关系
GENERATE TREEVIEW = ALL
4.运行 doxygen
在 shell 提示下输入 doxygen Doxyfile(或者已为配置文件选择的其他文件名)运行 doxygen。在最终生成 Hypertext Markup Language(HTML)和 Latex 格式(默认)的文档
5.安装下载 doxygen的 vim 插件
http://www.vim.org/scripts/script.php?script_id=987
将下载的插件安装到$VIMRUNTIME/plugin目录下,例如(vim的版本为7.2):
# cp DoxygenToolkit.vim /usr/share/vim/vim72/plugin/
之后,需要在VIM的配置文件中(/etc/vimrc)为doxygentoolkit这个插件配置一些全局变量:
let g:doxygenToolkit_authorName="your name"
let g:doxygenToolkit_briefTag_funcName="yes"
(在DoxygenToolkit.vim中举了一一些例子如何在.vimrc中添加配置)
这样,你就可以通过在vim中输入:DoxAuthor,Dox,Doxb等几个命令来完成doxygen风格的文档了。当然,你可以用VIM的map功能来绑定这几个命令。我通常采用以下绑定:
map <F3>a :DoxAuthor
map <F3>f :Dox
map <F3>b :DoxBlock
map <F3>c O/** */<Left><Left>
6.添加Doxygen的注释
命令 :Dox
在添加注释时,最常用的是:Dox,而每个文件同时也需要:DoxAuthor来添加文件头。
使用:Dox命令来为一个函数添加注释十分简单:
- 把光标移动到函数声明或者定义所在行(函数原型所在行),
- 执行:Dox。
- Doxygen会自动解析你的函数原型,并将相应的参数和返回值列出来。
例如,当你对int invoke(int
a, int b, int operation=0)添加注释时,Dox将生成如下代码
/**
* @brief invoke
*
* @param a
* @param b
* @param operation
*
* @return
*/
并将光标设知道invoke后面,方便你输入函数的简单描述。
命令 :DoxAuthor
DoxAuthor则会自动将文件名,作者,时间等关键字自动填好,十分方便。
当然,你也可以按照自己的配置来修改doxygenToolkit.vim。
Linux下使用doxygen+vim生成c语言源程序文档的方法的更多相关文章
- Linux下得到毫秒级时间--C语言实现(转-度娘818)
Linux下得到毫秒级时间--C语言实现 原文链接: http://www.cnblogs.com/nwf5d/archive/2011/06/03/2071247.html #ifdef HAVE_ ...
- Linux下获得系统时间的C语言实现
Linux下获得系统时间的C语言的实现方法 #include<time.h> //C语言的头文件#include<stdio.h> //C语言的I/O int main() ...
- [转]Linux下用gcc/g++生成静态库和动态库(Z)
Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10| 分类: linux | 标签:链接库 linux g++ gcc |举报|字号 订阅 ...
- Linux下c基于openssl生成MD5的函数
Linux下openssl提供了一系列哈希及加密的函数,如果调用openssl提供的MD5函数生成任意字符串的MD5呢?下面提供了一段代码实现Linux下c字符串生成md5的函数. 具体代码: 1 2 ...
- Linux下多网卡同网段多IP网络分流设定方法
Linux下多网卡同网段多IP网络分流设定方法 -- :: 标签:Linux下多网卡同网段多IP网络分流设定方法 当服务器需要较高的网络流量时,在其它资源不造成瓶颈的情况下无疑会用到多网卡. 第1选项 ...
- Linux下将UTF8编码批量转换成GB2312编码的方法
Linux下将UTF8编码批量转换成GB2312编码的方法 在sqlplus中导入UTF8编码的sql脚本就会出现乱码错误,这时就需要将UTF8编码转换成GB2312编码,下面为大家介绍下在Linux ...
- Linux下WebLogic的启动、停止和后台运行的方法
Linux下WebLogic的启动.停止和后台运行的方法 进入目录:/home/weblogic/user_projects/domains/base_domain/bin 查看目录下的命令,如图: ...
- linux下编码和vim编码问题解决
Linux下编码问题 在Linux环境下经常会出现文件乱码的问题,这实际上就是因为文件编码,以Ubuntu为例,默认的字符编码为UTF-8,并且没有默认安装gbk和gb2312,所以需要我们进行安装和 ...
- Linux下三个密码生成工具
http://code.csdn.net/news/2820879 想出一个难破解且容易记的密码对不是一件简单的事情.在我为电脑设定一个新密码,或者在线注册了一个新的账号,需要输入密码的时候,脑袋就一 ...
随机推荐
- 【BZOJ1969】[Ahoi2005]LANE 航线规划 离线+树链剖分+线段树
[BZOJ1969][Ahoi2005]LANE 航线规划 Description 对Samuel星球的探险已经取得了非常巨大的成就,于是科学家们将目光投向了Samuel星球所在的星系——一个巨大的由 ...
- EasyNVR H5流媒体服务器方案架构设计之视频能力平台
历经过程 阶段一:经历过传统安防开发过程的开发者都有一种感觉,就是各种业务交织,各个模块的开发扯皮,各种数据库连接冲突,这很让开发工作效率很低,而且会给整体的开发带来负面影响,更重要的是,耦合度太高, ...
- bmdiff snappy lzw gzip
https://github.com/google/snappy Introduction [速度第一,压缩比适宜] [favors speed over compression ratio] Sna ...
- 我的Java开发学习之旅------>工具类:Java获取字符串和文件进行MD5值
ps:这几天本人用百度云盘秒传了几部大片到云盘上,几个G的文件瞬秒竟然显示"上传成功"!这真让我目瞪口呆,要是这样的话,那得多快的网速,这绝对是不可能的,也许这仅是个假象.百度了一 ...
- 深刻理解render 和 redirect_to
深刻理解render 和 redirect_to http://www.blogjava.net/fl1429/archive/2009/03/12/259403.html 由于最近老是在表单提交后出 ...
- Java多线程系列 基础篇04 线程中断
1. 中断线程 中断可以理解为线程的一个标志位属性,它表示一个运行中的线程是否被其他线程进行了中断操作,其他线程通过调用该线程的interrupt()方法对其进行中断操作,线程通过检查自身是否被中断来 ...
- jquery.dataTables.min.js: Uncaught TypeError: Cannot read property 'style' of undefined
原因:datatable表格内容有操作列,而表头没有定义操作列 少写了一行:<th>操作</th>
- Ubuntu 更新/安装nodejs
nvm nvm是一个开源的Node版本管理器,通过简单的bash脚本来管理.切换多个Node.js版本.和nvm提供类似功能的还有tj写的n,它们的功能大同小异,整体来说nvm要稍强大一下.值得注意的 ...
- Linux-NoSQL之memcached
1.memcached安装 yum search memcached yum install -y libevent memcached libmemcached 启动:/etc/init.d/mem ...
- linux 加密解密文件小程序
代码见下面,编译之后就可以用:建议放在bash下,或者添加环境变量. 使用方法:encrypt .两次输入密码.加密密码与解密密码不一致解码后就不是原文件了! #include <stdio.h ...