文档章节

Doxygen+Graphviz生成函数调用流程图

b
 backtrackx
发布于 2017/03/24 20:52
字数 1742
阅读 117
收藏 0

Doxygen+Graphviz生成函数调用流程图

2017-3-3来源:C/C++教程人气:14

Doxygen
简介
Doxygen是一个C++、C、java、Objective-C、Python语言的文檔生成器。可以在大多数类Unix的系统上运行,以及Mac OS X操作系统和Microsoft Windows。

下载源码并编译
地址
下载源码或者压缩包均可http://www.stack.nl/~dimitri/doxygen/index.html

编译方法
bash-2.05$ cd doxygen bash-2.05$ ./configure –PRefix=/home/user1/bin bash-2.05$ make bash-2.05$ make install
Graphviz
简介
Graphviz的是AT&T Labs Research开发的图形绘制工具,他可以很方便的用来绘制结构化的图形网络,支持多种格式输出,生成图片的质量和速度都不错.Graphviz本身是开源的产品,下载可以到 这里,以及他的演示界面 Graphviz在windows上和linux上都可以顺利运行.

下载源码并编译
地址
下载源码或者压缩包均可http://www.graphviz.org/

编译方法
bash-2.05$ cd graphviz bash-2.05$ ./configure –prefix=/home/user1/bin bash-2.05$ make bash-2.05$ make install
使用 doxygen 生成文档
使用 doxygen 生成源代码的文档需要执行三个步骤。

生成配置文件
在 shell 提示上,输入命令 doxygen -g。这个命令在当前目录中生成一个可编辑的配置文件 Doxyfile。可以改变这个文件名,在这种情况下,应该调用 doxygen -g user-specified file name

bash-2.05b$ doxygen -g Configuration file 'Doxyfile' created. Now edit the configuration file and enter doxygen Doxyfile to generate the documentation for your project bash-2.05b$ ls Doxyfile Doxyfile
编辑配置文件
配置文件采用 TAGNAME = VALUE 这样的结构,与 Make 文件格式相似。 下面是最重要的标记:

工程配置

OUTPUT_DIRECTORY:必须在这里提供一个目录名,例如 /home/user1/documentation,这个目录是放置生成的文档文件的位置。如果提供一个不存在的目录名,doxygen 会以这个名称创建具有适当用户权限的目录。 INPUT:这个标记创建一个以空格分隔的所有目录的列表,这个列表包含需要生成文档的 C/C++ 源代码文件和头文件。例如,请考虑以下代码片段:INPUT = /home/user1/project/kernel /home/user1/project/memory 在这里,doxygen 会从这两个目录读取 C/C++ 源代码。如果项目只有一个源代码根目录,其中有多个子目录,那么只需指定根目录并把 RECURSIVE 标记设置为 Yes。 FILE_PATTERNS:在默认情况下,doxygen 会搜索具有典型 C/C++ 扩展名的文件,比如 .c、.cc、.cpp、.h 和 .hpp。如果 FILE_PATTERNS 标记没有相关联的值,doxygen 就会这样做。如果源代码文件采用不同的命名约定,就应该相应地更新这个标记。例如,如果项目使用 .c86 作为 C 文件扩展名,就应该在 FILE_PATTERNS 标记中添加这个扩展名。 RECURSIVE:如果源代码层次结构是嵌套的,而且需要为所有层次上的 C/C++ 文件生成文档,就把这个标记设置为 Yes。例如,请考虑源代码根目录层次结构 /home/user1/project/kernel,其中有 /home/user1/project/kernel/vmm 和 /home/user1/project/kernel/asm 等子目录。如果这个标记设置为 Yes,doxygen 就会递归地搜索整个层次结构并提取信息。 EXTRACT_ALL:这个标记告诉 doxygen,即使各个类或函数没有文档,也要提取信息。必须把这个标记设置为 Yes。 EXTRACT_PRIVATE:把这个标记设置为 Yes。否则,文档不包含类的私有数据成员。 EXTRACT_STATIC:把这个标记设置为 Yes。否则,文档不包含文件的静态成员(函数和变量)。
生成图形和图表 在默认情况下,Doxyfile 把 CLASS_DIAGRAMS 标记设置为 Yes。这个标记用来生成类层次结构图。要想生成更好的视图,可以从 Graphviz 下载站点 下载 dot 工具。Doxyfile 中的以下标记用来生成图表:

CLASS_DIAGRAMS:在 Doxyfile 中这个标记默认设置为 Yes。如果这个标记设置为 No,就不生成继承层次结构图。 HAVE_DOT:如果这个标记设置为 Yes,doxygen 就使用 dot 工具生成更强大的图形,比如帮助理解类成员及其数据结构的协作图。注意,如果这个标记设置为 Yes, CLASS_DIAGRAMS 标记就无效了。 CLASS_GRAPH:如果 HAVE_DOT 标记和这个标记同时设置为 Yes,就使用 dot 生成继承层次结构图,而且其外观比只使用 CLASS_DIAGRAMS 时更丰富。 COLLABORATION_GRAPH:如果 HAVE_DOT 标记和这个标记同时设置为 Yes,doxygen 会生成协作图(还有继承图),显示各个类成员(即包含)及其继承层次结构。
从文档生成过程中排除特定文件或目录

在 Doxyfile 中的 EXCLUDE 标记中,添加不应该为其生成文档的文件或目录(以空格分隔)。 因此,如果提供了源代码层次结构的根,并要跳过某些子目录,这将非常有用。 例如,如果层次结构的根是 src_root,希望在文档生成过程中跳过 examples/ 和 test/memoryleaks 文件夹
文档输出格式 除了 HTML 之外,doxygen 还可以生成几种输出格式的文档。可以让 doxygen 生成以下格式的文档:

UNIX 手册页:把 GENERATE_MAN 标记设置为 Yes。在默认情况下,会在 OUTPUT_DIRECTORY 指定的目录中创建 man 子文件夹,生成的文档放在这个文件夹中。必须把这个文件夹添加到 MANPATH 环境变量中。 Rich Text Format(RTF):把 GENERATE_RTF 标记设置为 Yes。把 RTF_OUTPUT 标记设置为希望放置 .rtf 文件的目录;在默认情况下,文档放在 OUTPUT_DIRECTORY 中的 rtf 子文件夹中。要想支持跨文档浏览,应该把 RTF_HYPERLINKS 标记设置为 Yes。如果设置这个标记,生成的 .rtf 文件会包含跨文档链接。 Latex:在默认情况下,doxygen 生成 Latex 和 HTML 格式的文档。在默认的 Doxyfile 中, GENERATE_LATEX 标记设置为 Yes。另外, LATEX_OUTPUT 标记设置为 Latex,这意味着会在 OUTPUT_DIRECTORY 中创建 latex 子文件夹并在其中生成 Latex 文件。 Microsoft® Compiled HTML Help(CHM)格式:把 GENERATE_HTMLHELP 标记设置为 Yes。因为在 UNIX 平台上不支持这种格式,doxygen 只在保存 HTML 文件的文件夹中生成一个 index.hhp 文件。您必须通过 HTML 帮助编译器把这个文件转换为 .chm 文件。 Extensible Markup Language(xml)格式:把 GENERATE_XML 标记设置为 Yes。(注意,doxygen 开发团队还在开发 XML 输出)。
运行 doxygen
在 shell 提示下输入 doxygen Doxyfile(或者已为配置文件选择的其他文件名)运行 doxygen。 在最终生成 Hypertext Markup Language(HTML)和 Latex 格式(默认)的文档之前,doxygen 会显示几个消息。 在生成文档期间,在 OUTPUT_DIRECTORY 标记指定的文件夹中,会创建两个子文件夹 html 和 latex。

© 著作权归作者所有

b
粉丝 0
博文 33
码字总数 20877
作品 0
深圳
私信 提问
个人记录丨csharp 编译文件绕过防病毒软件利用手法分析

首页图 部分安全软件为了保障用户PC系统环境安全,会建立一个应用程序白名单,在特定情况下PC只允许指定的白名单中的应用程序启动执行。这里整理网上一些绕过应用程序白名单技巧进行分析,学...

皆明
2018/02/05
0
0
Android_JellyBean 4.2.1 Camera Service 请求过程分析

Camera子系统采用C/S架构,客户端和服务端在两个不同的进程当中,它们使用android中的binder机制进行通信,本系列文章将从Android Camera应用程序到硬件抽象的实现一步一步对照相机系统进行分析...

Jerikc
2013/03/09
994
0
用 Graphviz+pvtrace 可视化函数调用

1、要有代码,随便写个小程序,如下所示。 #cat test.c #include include void haha();void hehe(){ } void test(){ } void haha(){ } int main(){ } 2、要下载一个叫pvtrace的解析工具,我把...

范大脚脚
2017/11/14
0
0
Thrift之代码生成器Compiler原理及源码详细解析1

我的新浪微博:http://weibo.com/freshairbrucewoo。 欢迎大家相互交流,共同提高技术。 又很久没有写博客了,最近忙着研究GlusterFS,本来周末打算写几篇博客的,但是由于调试GlusterFS的一...

xumaojun
2018/04/21
0
0
从源码理解Redux和Koa2的中间件机制

Redux和Koa的中间件机制相关源码都很精简。 正文我将直接引用部分源码,并加以注释来帮助我们更清晰的理解中间件机制。 Reudx redux的中间件机制在源码中主要涉及两个模块 内部的compose组合...

jiangqizheng
2018/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
今天
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部