doxygen上手

what

doxygen是一个自动根据注释生成文档的工具。支持html、chm、pdf等格式。

安装

  • 源码
    github
  • 编译安装
    工程使用cmake组织 。会缺少一些依赖,缺啥补啥就行。

生成文档的步骤

  • 按照doxygen的规范进行代码注释
  • 生成一个配置文件,根据自己的需要修改参数
  • 调用doxygen生成文档

实验1:生成doxygen的文档。

  • 准备源码
    doxygen的代码本身就是按照自己的格式注释的,这里不需要操作。
  • 生成配置文件
    -doxygen –g
  • 生成不带注释的:doxygen -s –g
  • 配置文件的修改参数
    参数都有注释,可以简单修改一下类似工程名、语言这些基本配置,也可以不改。
  • 进入源码目录,执行doxygen your-cfg-filename
    这就会生成一个html的文档。
    image.png

这样就会生成一份doxygen自己的文档。

doxygen配置主要参数:

  • PROJECT_NAME = “Test”
  • PROJECT_NUMBER = 1.0.0
  • OUTPUT_DIRECTORY = doc/
  • OPTIMIZE_OUTPUT_FOR_C = NO
    c++这里就用NO
  • TYPEDEF_HIDES_STRUCT = YES
    定义的结构体、枚举、联合等数据类型,只按照 typedef定义的类型名进行文档化
  • GENERATE_LATEX = NO
    默认会生成一个html和latex的文档,有html就够了。
  • RECURSIVE = YES
    是否递归调用
  • GENERATE TREEVIEW = ALL
    这会在HTML文档中,添加一个侧边栏,并以树状结构显示包、类、接口等的关系

注释规范

  • 单行注释
    用“//!”来表示,例如://!概要
  • 多行注释
/*!
xx@#$%~
xx^&*(
*/
  • 各种标记
    一些类似paramreturn这些标记,doxygen会解释这些标记。可以用@链接这些标记,也可以用\
  • b 加粗
  • param 参数
  • tparam 模板参数
  • code和encode用于表示一个代码块
  SomeClass sc("hello");
  string result;
  int ret = sc.Func("world",3,result);
  \endcode
  • note 说明注释
  • return 返回值
  • todo 待做的
  • deprecated 启用的
  • 使用@分组
//! @name operator
    //@{
        bool operator==(const SomeClass& other) const { return true;} 
        bool operator!=(const SomeClass& other) const { return true;} 
        bool operator<(const SomeClass& other) const { return true;} 
        bool operator>(const SomeClass& other) const { return true;} 
    //@}

完整的示例:

  • 代码:
#pragma once

/*! \file document.h */

#include <string>
#include <vector>

using namespace std;

//!概要
/*!
    具体注释:

    \tparam 模板参数的注释
    \see SomeClass::SomeClass

    这就是一个测试类。

    \b "\b"表示加粗
    \code 
    SomeClass sc("hello");
    string result;
    int ret = sc.Func("world",3,result);
    \endcode
*/
template<typename Type>
class SomeClass
{
public:
    /*!
        构造函数

        \param str 输入字符串

        \note 说明
    */
    SomeClass(string const& str){}

    //! 函数注释概要
    /*!
        具体解释
        \li 解释1
        \li 解释2
        \li 解释3

        \param outStr 输出字符串

        \return int 错误码,0表示成功

        \todo 对各种错误进行整理
    */
    int Func(string const& str,int len, string& outStr)
    {
        return 0;
    }

    //! \deprecated
    int Func()
    {
        return 0;
    }

    //! @name operator
    //@{
        bool operator==(const SomeClass& other) const { return true;} 
        bool operator!=(const SomeClass& other) const { return true;} 
        bool operator<(const SomeClass& other) const { return true;} 
        bool operator>(const SomeClass& other) const { return true;} 
    //@}
public:
    string value_;

private:
    int len_;
    Type type_;
}
  • 生成的文档如下:


    image.png

    image.png

    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,387评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,845评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,091评论 0 246
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,308评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,662评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,795评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,008评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,743评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,466评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,687评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,181评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,531评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,177评论 3 239
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,126评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,902评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,862评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,734评论 2 274

推荐阅读更多精彩内容