今天给大家介绍一下doxygen。这个工具由来已久了,至少08年左右就已经在用了,但是目前还没见到好的介绍。我个人觉得这是个很简单易用的工具,但是为什么看了别人介绍反而觉得复杂了……所以趁着今天比较闲就来说一说它。


  doxygen是一个自动文档生成工具,根据代码里写的注释,自动生成html和latex格式的文档。通常是给c++用的,通常是出html格式的,你看到的pcl网上文档就是拿doxygen生成的。

  事实上,随意一份代码,都可以拿doxygen生成一个文档,然后在本地看它的代码结构。 我们拿以难读著称的lsd-slam举个例子。

  首先,建个文件夹,把lsd-slam的代码拷下来:

 git clone https://github.com/tum-vision/lsd_slam.git

  拷完之后lsd就在你电脑里躺着了。进到package_dir/lsd_slam/lsd_slam_core,打开一看?哇,一堆文件。仔细一看?哇,好多类和变量,还有藏着掖着的全局变量,还有SSE指令!太多了,没法看,怎么办?别急,我们用doxygen生成一个网页来看。网页的好处是可以随处跳转。


  由于你电脑里可能还没有doxygen,我们先来安装一下:

 sudo apt-get install doxygen doxygen-gui

  什么?你不是Ubuntu怎么办?你都不用Ubuntu了还用我教你装软件?

  昂,总之,主要是doxygen本体和它的gui模块。我在ubuntu14.04下是这两个包名。如果你不确定,请用apt-cache search doxygen查一下。

  装好了之后,在该文件夹下开一个doc文件夹,把一会儿生成的文档放里头:

 mkdir doc; cd doc

  然后,输入doxywizard调出gui面板。

 doxywizard

  然后就会出一个面板啦,来看看上面都有啥:(外观视你的桌面环境可能略有不同)

  大概能看出哪些地方要设置吧?首先把Step 1中的目录设到你要保存文档的目录。Project name那些东西随意,可以不设。比较重要的是源代码目录source code directory,请把它设到lsd_slam_core/src下,并钩上Scan recursively,表明我们要扫描子文件夹。然后,输出文件夹设成当前目录./即可,本来我们就在当前目录嘛。

  这步做好了,点左边的“Mode”,进入下一个版块。下个版块里会让你选语言,既然咱们用c++,保持默认的就可以了。

  Output和Diagrams也没什么好动的。

  现在准备工作完成啦!切到Run,点“Run doxygen",哗啦哗啦,等文档生成完。然后点“show html output",就可以在浏览器里看到文档啦。如果你下一次想直接看,直接打开doc/html/index.html就可以了!

  

  是不是和网上的文档很像啊?看这个比看源代码效果更高哦!


命令行

  doxygen本身是命令行格式的,给一个配置文件,然后根据配置文件去生成文档。但是!几百个配置选项我怎么记得住啊!既然图形界面那么好用为啥要去用命令行啊!哦你没有桌面环境?那还是乖乖用命令行吧……

  命令行的doxygen也很简单。首先用

 doxygen -s -g settings.txt

  生成一个配置文件,然后去修改配置文件里的值,基本上和上面讲的差不多啦!只是配置会复杂一点。比较重要的参数有输入,输出,扫描文件的后缀名等等。其实这些都可以在图形界面的“Expert“里配的!我也是这么干的!所以如果你有屏幕的话还是建议你用图形界面啦!当这个文件改好后,调用

doxygen settings.txt

  按这个文件生成文档。当然如果你写错了,文档就不会生成了!所以还是用图形界面吧!(我在俊哥面前就调了半天这东西的配置文件结果人家妹子都睡着了我才调出来,所以在妹子面前调程序请务必找个熟悉的调)


后话

  doxygen还能按照一些特殊注释格式来生成特别的文档。如果你感兴趣,可以看看上一讲octomap里的那个doc/目录。它也可以用doxygen生成一个文档,但那个文档功能更高级些,可以显示类继承关系树状图等等。据说还能生成别的语言的注释,然而像python估计也不需要这种工具……总之,你要玩的话,doxygen还是有些东西可以玩的,虽然并不太多。本着KISS原则,我还是把它当成一个简单好用的小工具,不必太折腾就能出文档啦!那么,本讲就写到这里,咱们下次再见!

SLAM拾萃(2):doxygen的更多相关文章

  1. SLAM拾萃(1):octomap

    前言 大家好,时隔多年之后,我又开始了博客旅程.经历了很多事情之后呢,我发现自己的想法真的很简单:好好读书做课题,闲下来时写写博客,服务大家.所以我会继续写SLAM相关的博客.如果你觉得它对你有帮助, ...

  2. SLAM拾萃(3):siftGPU

    前言 本周博客我们给大家介绍一下SiftGPU.由于特征匹配是SLAM中非常耗时间的一步,许多人都想把它的时间降至最短,因此目前ORB成了非常受欢迎的特征.而老牌SIFT,则一直给人一种“很严谨很精确 ...

  3. octomap的简介

    装载自高翔博士的博客:https://www.cnblogs.com/gaoxiang12/p/5041142.html 什么是octomap? RGBD SLAM的目的有两个:估计机器人的轨迹,并建 ...

  4. [学习笔记]SiftGPU入门

    当有读者看到我这篇SiftGPU入门的学习笔记时,相信你已经读过了高博那篇<SLAM拾萃:SiftGPU>,那篇文章写于16年,已经过去两年的时间.在我尝试配置SiftGPU的环境时,遇到 ...

  5. 在QtCreator中使用doxygen

    接触Doxygen后,认识到其强大之处,一口气将之前的烂代码重构了一遍,所有的文件头,函数注释等等都是手动添加注释.在keil中可以看到其对JavaDoc风格的注释有高亮,非常好看.但是keil这个I ...

  6. Windows下使用doxygen阅读和分析C/C++代码

    Windows下使用doxygen阅读和分析C/C++代码 转自:http://blog.sina.com.cn/s/blog_63d902570100gwk6.html 虽然使用各种IDE或者Sou ...

  7. (转)Doxygen文档生成工具

    http://blog.csdn.net/lostaway/article/details/6446786 Doxygen 是一个支持 C/C++,以及其它多种语言的跨平台文档生成工具.如同 Java ...

  8. Slam(即时定位与地图构建) 知识篇

    Slam即时定位与地图构建 技术解释 同步定位与地图构建(SLAM或Simultaneous localization and mapping)是一种概念:希望机器人从未知环境的未知地点出发,在运动过 ...

  9. ubuntu使用doxygen

    1.安装 sudo apt-get install doxygen按tab键 doxygen        doxygen-dbg    doxygen-doc    doxygen-gui    d ...

随机推荐

  1. Android分类导航

    新的一年,将在2017下半年所写的博文作了个总结,也是方便自己以后查阅,整理完也是发现在这半年而是学到了许多,新的一年,继续努力! 我的第一个Android开源库——CirclePointMove中文 ...

  2. TCP和UDP Client 代码

    最近学习要求做网络编程,使用从网上找了一些资料,主要是网络协议的分层等通讯,你可以查看英文版的资料:CScharp网络编程英文版 下面直接给出代码吧,我想一看应该就懂. TCP Client 代码: ...

  3. .NET委托解析(异步委托)

    上一篇我们了解到了,委托的基本感念,列举了几个委托的实例,并根据实例来反编译源码查看.NET 委托的内部实现,从浅入深的角度来详细的去解析委托的实质,本文将系上篇继续讨论异步委托的实现以及异步委托的源 ...

  4. hBuilder培训资源视频教程汇总

    DCloud对开发者的学习支持分3个层面:官方文档.三方专业培训.网友经验分享 DCloud的精力主要在做产品,配套的文档也会一直完善好.但专业的培训还不是DCloud能做好的,在HTML5中国产业联 ...

  5. 黄聪:Microsoft office 2013版下载、安装及破解工具下载破解教程(Windows Toolkit)

    Microsoft Office 2013(Office 15)是微软的新一代Office办公软件,全面采用Metro界面.Microsoft Office 2013官方下载(Office2013专业 ...

  6. char、varchar、varchar2区别

    char varchar varchar2 的区别 区别:1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的 ...

  7. 学习笔记之PHP

    学习 PHP,第 1 部分: 注册帐户.上传需要批准的文件.并查看和下载已批准的文件 https://www.ibm.com/developerworks/cn/opensource/tutorial ...

  8. 设置putty标题栏显示固定信息

    设置好后,登录服务器后,发现标题栏又显示root@sit:/opt/ihome,没有显示成我设置的title内容.原因是: 在Terminal->Features中一定要勾选Disable re ...

  9. Linux操作系统-基本命令(一)

    熟悉Linux命令基础 Linux系统的终端窗口 字符终端为用户提供了一个标准的命令行接口,在字符终端窗口中,会显示一个Shell提示符,通常为$. 用户可以在提示符后输入带有选项和参数的字符命令,并 ...

  10. hibench学习

    hibench包含几个hadoop的负载 micro benchmarksSort:使用hadoop randomtextwriter生成数据,并对数据进行排序. Wordcount:统计输入数据中每 ...