Linux环境下添加doxygen对C语音的更好的支持

doxygen能够从代码的注释中自动生成文档。因此,熟练掌握doxygen的注释格式、配置方法和使用模式,能够极大地方便代码阅读、文档制作和代码评审。doxygen的使用可以从软件安装、配置设置、文档生成这几个方面分别介绍。

1. 软件安装

以centos 为例,首先安装doxgyen:

install doxygen

yum search doxygen

yum install doxygen-latex.x86_64 doxygen.x86_64 doxygen-doxywizard.x86_64 polkit-qt-doc.noarch

接着安装依赖的图形绘制工具软件:grahpviz

install graphviz

yum search graphviz

yum install graphviz-devel.x86_64 graphviz-doc.x86_64 graphviz-gd.x86_64 graphviz-guile.x86_64 graphviz-java.x86_64 graphviz-lua.x86_64 graphviz-perl.x86_64 graphviz-php.x86_64 graphviz-python.x86_64 graphviz-ruby.x86_64 graphviz-tcl.i686 graphviz-tcl.x86_64 graphviz.x86_64 graphviz-guile.x86_64

为了便于在vim中直接生成doxygen能识别的常用注释,需要添加vim插件的支持:

首先下载vim 插件:

https://vim.sourceforge.io/scripts/script.php?script_id=987

从其中选择 DoxygenToolkit.vim 0.2.13

然后依次执行下面的命令和操作:

cp DoxygenTookkit.vim ~/root/.vim/plugin/

在~/.vimrc最后加入下面几行:

[[email protected] plugin]# tail -f /root/.vimrc

"let Tlist_Auto_Open=1

"let g:vimmake_mode = { ‘gcc‘:‘quickfix‘, ‘run‘:‘normal‘ }

let g:vimmake_mode = { ‘gcc‘ : ‘async‘, ‘run‘ : ‘normal‘ }

let g:doxygenToolkit_authorName="TiShai Hua"

let g:doxygenToolkit_briefTag_funcName="yes"

map <F2>a :DoxAuthor

map <F2>f :Dox

map <F2>b :DoxBlock

map <F2>c O/** */<Left><Left>

这样就可以参考下面的说明来利用Dox/DoxBlock/DoxAuthor来自动生成可被Doxygen理解的注释了:

//// below generated by : DoxAuthor

/**

* @file test.c

* @brief

* @author hongmei

* @version 0.01

* @date 2017-09-21

*/

//// below generated by : ‘Dox ‘ command in vim

/**

* @brief

*

* @param a

* @param b

*

* @return

*/

int test(int a ,int b)

{

int c,i;

//// below generated by : ‘DoxBlock‘ command in vim

/**

* @name

* @{ */

/**  @} */

c = i = 1;

a++;

return a;

}

2. 配置设置

可以运行下面的命令来生成doxygen 配置文件:

doxygen -g

接着编辑Doxyfile, 添加对C inline/static/typedef 的支持,实现对目录、文件、函数的递归解析,支持生产引用和被调用的分析图。我主要的设置如下,仅供参考:

[[email protected]]# cat Doxyfile  | grep -v "#" | egrep -v "^$" | egrep -v "=$" | grep -v "NO"

DOXYFILE_ENCODING      = UTF-8

PROJECT_NAME           = "Low-3-sistr"

PROJECT_NUMBER         = "0.01"

OUTPUT_DIRECTORY       = doc/

OUTPUT_LANGUAGE        = Chinese

BRIEF_MEMBER_DESC      = YES

REPEAT_BRIEF           = YES

ALWAYS_DETAILED_SEC    = YES

FULL_PATH_NAMES        = YES

OPTIMIZE_OUTPUT_FOR_C  = YES

MARKDOWN_SUPPORT       = YES

AUTOLINK_SUPPORT       = YES

IDL_PROPERTY_SUPPORT   = YES

TYPEDEF_HIDES_STRUCT   = YES

LOOKUP_CACHE_SIZE      = 0

EXTRACT_ALL            = YES

EXTRACT_PRIVATE        = YES

EXTRACT_STATIC         = YES

EXTRACT_LOCAL_CLASSES  = YES

CASE_SENSE_NAMES       = YES

SHOW_INCLUDE_FILES     = YES

INLINE_INFO            = YES

SORT_MEMBER_DOCS       = YES

GENERATE_TODOLIST      = YES

GENERATE_TESTLIST      = YES

GENERATE_BUGLIST       = YES

GENERATE_DEPRECATEDLIST= YES

MAX_INITIALIZER_LINES  = 30

SHOW_USED_FILES        = YES

SHOW_FILES             = YES

SHOW_NAMESPACES        = YES

INPUT                  = /home/AndiGu

INPUT_ENCODING         = UTF-8

FILE_PATTERNS          = *.c *.cpp *.java *.h

RECURSIVE              = YES

SOURCE_BROWSER         = YES

STRIP_CODE_COMMENTS    = YES

REFERENCED_BY_RELATION = YES

REFERENCES_RELATION    = YES

REFERENCES_LINK_SOURCE = YES

SOURCE_TOOLTIPS        = YES

VERBATIM_HEADERS       = YES

ALPHABETICAL_INDEX     = YES

COLS_IN_ALPHA_INDEX    = 5

GENERATE_HTML          = YES

ENUM_VALUES_PER_LINE   = 4

TREEVIEW_WIDTH         = 250

FORMULA_FONTSIZE       = 10

FORMULA_TRANSPARENT    = YES

MATHJAX_FORMAT         = HTML-CSS

SEARCHENGINE           = YES

GENERATE_LATEX         = YES

LATEX_OUTPUT           = latex

LATEX_CMD_NAME         = latex

MAKEINDEX_CMD_NAME     = makeindex

PAPER_TYPE             = a4

PDF_HYPERLINKS         = YES

USE_PDFLATEX           = YES

LATEX_BIB_STYLE        = plain

RTF_OUTPUT             = rtf

MAN_OUTPUT             = man

MAN_EXTENSION          = .3

XML_OUTPUT             = xml

XML_PROGRAMLISTING     = YES

DOCBOOK_OUTPUT         = docbook

PERLMOD_PRETTY         = YES

ENABLE_PREPROCESSING   = YES

SEARCH_INCLUDES        = YES

CLASS_DIAGRAMS         = YES

HIDE_UNDOC_RELATIONS   = YES

DOT_NUM_THREADS        = 0

DOT_FONTSIZE           = 10

CLASS_GRAPH            = YES

COLLABORATION_GRAPH    = YES

GROUP_GRAPHS           = YES

UML_LOOK               = YES

UML_LIMIT_NUM_FIELDS   = 10

INCLUDE_GRAPH          = YES

INCLUDED_BY_GRAPH      = YES

CALL_GRAPH             = YES

CALLER_GRAPH           = YES

GRAPHICAL_HIERARCHY    = YES

DIRECTORY_GRAPH        = YES

INTERACTIVE_SVG        = YES

MAX_DOT_GRAPH_DEPTH    = 8

3. 文档生成

然后进入上面配置文件设置的INPUT目录,执行“doxygen", 命令执行完成之后,在output制定的目录里面 就可以看到生产了html目录和latex目录。如果需要用HTML看整个代码,可以在IE或者firefox浏览器中打开annotated.html,可以看到所有的代码结构和注释。

时间: 2025-01-07 14:40:34

Linux环境下添加doxygen对C语音的更好的支持的相关文章

linux环境下给python添加tab自动补齐

Pthon开发环境有很多种,可以使用IDE环境,比如eclipse,charm.也可以在linux下使用ipython,使用ipython就是因为有自动补全功能.当然也可以在linux环境下使用原生的python添加Tab补齐,也就实现了ipython的功能. 只需要在python的包路径中添加tab补齐模块即可. [[email protected] ~]# cd /usr/lib64/python2.7/ [[email protected] python2.7]# vim tab.py t

(1)Jenkins Linux环境下的简单搭建

(1)Jenkins Linux环境下的简单搭建 Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. ----百度百科 这是一款基于Java开发的工具.种种原因,最近刚开始接触,决定研究一下.Jenkins的搭建方法不止一种,一下就是个人总结的其中一种,文章内容比较浅显,不足之处,欢迎指正. 首先,所需要准备的工具JDK.Maven.资料上显示JDK版本最好高于1.7,并没有研究1.7以下版本,所谓"没有实际调研,就没有发言权",在此就不做过多

mosquitto在Linux环境下的部署/安装/使用/测试

mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. 使用传统源码安装步骤: 步骤1:http://mosquitto.org/files/source/官网下载源码,放到Linux环境中.解压后,找到主要配置文件config.mk,其中包含mosquitto的安装选项,需要注意的是,默认情况下mosquitto的安装需要OpenSSL(一个强大的安全

weblogic新建域-linux环境下

[[email protected] bin]#/oracle/middleware/wlserver_12.1/common/bin [[email protected] bin]# ./config.sh -mode=console <---------------------------------------------------------------------------------- Fusion Middleware 配置向导 ------------------------

从零教你在Linux环境下(ubuntu)如何编译hadoop2.4

问题导读: 1.如果获取hadoop src  maven包?2.编译hadoop需要装哪些软件?3.如何编译hadoop2.4?扩展:编译hadoop为何安装这些软件? 本文链接 http://www.aboutyun.com/thread-8130-1-1.html 一.首先下载hadoop源码包下载的方式还是比较多的1.svn的方式svn下载首先需要安装SVN,如果想尝试使用svn,可以参考源码管理.获取网络源码工具:TortoiseSVN使用手册,hadoop的svn下载地址点此2.压缩

深度分析LINUX环境下如何配置multi-path

首先介绍一下什么是多路径(multi-path)?先说说多路径功能产生的背景,在多路径功能出现之前,主机上的硬盘是直接挂接到一个总线(PCI)上,路径是一对一的关系,也就是一条路径指向一个硬盘或是存储设备,这样的一对一关系对于操作系统而言,处理相对简单,但是缺少了可靠性.当出现了光纤通道网络(Fibre Channle)也就是通常所说的SAN网络时,或者由iSCSI组成的IPSAN环境时,由于主机和存储之间通过光纤通道交换机或者多块网卡及IP来连接时,构成了多对多关系的IO通道,也就是说一台主机

【转载】linux环境下tcpdump源代码分析

linux环境下tcpdump源代码分析 原文时间 2013-10-11 13:13:02   原文链接   主题 Tcpdump 作者:韩大卫 @ 吉林师范大学 tcpdump.c 是tcpdump 工具的main.c, 本文旨对tcpdump的框架有简单了解,只展示linux平台使用的一部分核心代码. Tcpdump 的使用目的就是打印出指定条件的报文,即使有再多的正则表达式作为过滤条件.所以只要懂得tcpdump -nXXi eth0 的实现原理即可. 进入main之前,先看一些头文件 n

Linux环境下GNU, GCC, G++编译器

一,GNU GNU是"GNU 's Not Unix"的递归缩写, Stallman宣布GNU应当发音为Guh-NOO(革奴)以避免与new这个单词混淆(注:Gnu在英文中原意为非洲牛羚,发音与new相同) 为保证GNU软件可以自由地"使用.复制.修改和发布",所有GNU软件都在一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL).这个就是被称为"反版权&q

在虚拟机linux环境下编译windows版adb fastboot

原文出自:http://blog.chinaunix.net/uid-20546441-id-1746200.html 我根据虚拟机编译遇到的问题进行一些添加 [前提条件] Linux Android源码完整 虚拟机磁盘空间100G左右(60G用来存放代码和编译后的文件) swap 30G左右,若太小会导致在编译后提示缺失文件 [具体步骤] 理论上,只要下一个windows版本的SDK,里面就自带了fastboot和adb工具. 但我最近确实遇到了一个需要在linux下编译出windows版本的