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最后加入下面几行:

[root@localhost 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 的支持,实现对目录、文件、函数的递归解析,支持生产引用和被调用的分析图。我主要的设置如下,仅供参考:

[root@localhost]# 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,可以看到所有的代码结构和注释。

 

wKiom1nEnn6jUBBHAADM8HStLOc172.png


 















本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1967738 ,如需转载请自行联系原作者



相关文章
|
26天前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
150 11
|
3月前
|
存储 监控 Linux
Linux环境锁定关键文件防止误删操作流程。
总结以上内容,在Linux环境下锁定重要文档避免误删涉及到多种技术手段与策略组合运作, 包括但不限于利用chatter指挥官固化文档状态至只读模式、运作ACL精准调整访问权利列表、编排自动化流程简
138 20
|
3月前
|
Linux
Linux环境下的UDEV机制及其与守护进程的关联
实际使用时管理员需要熟悉编写合适udev rules去满足特殊需求;同时也需要注意避免编写过度复杂导致无法预料结果rules.UDEVD虽然稳健但错误配置可能导致无法预料问题因此需谨慎处理相关配置工作.
133 16
|
3月前
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
251 8
|
4月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
308 10
|
3月前
|
Ubuntu 安全 Linux
Ubuntu 24.10 发行版登场:Linux 6.11 内核、GNOME 47 桌面环境
Ubuntu 24.10 还带来了 GNOME 47,增强了性能和稳定性,并引入了新功能。此版本的 Ubuntu 还默认在采用 Nvidia 显卡的硬件上切换到 Wayland,并在支持的硬件上默认使用开源的 Nvidia 560 内核模块。 另外需要注意的是,Ubuntu 24.10 是稳定版本,但作为非 LTS 版本,仅支持 9 个月。
|
3月前
|
安全 Linux 网络安全
Linux系统初步设置本地Git环境和生成SSH密钥的步骤。
现在您的Linux系统已经配置好了Git环境,并创建并添加了SSH密钥,可以安全地与远端仓库进行交互,无论是克隆、推送还是拉取操作。此过程确保了数据传输的安全并使版本控制流程更为顺畅。使用Git时应考虑定期更新并管理您的凭据,以确保安全性。
460 0
|
3月前
|
XML 缓存 Linux
在Linux环境下解决Visual Studio Code字体显示异常和字体替换方法。
解决Linux下VS Code字体显示异常,需要对Linux字体渲染机制有所理解,并对VS Code的配置选项进行合理设置。替换字体时则要通过系统字体配置或VS Code设置来完成。通过上述方法,可以有效地解决字体显示问题,从而提升代码编辑的视觉体验。
442 0
|
4月前
|
Kubernetes Linux 网络安全
Rocky Linux 8.9配置Kubernetes集群详解,适用于CentOS环境
初始化成功后,记录下显示的 `kubeadm join`命令。
242 0