用Doxygen生成程序文档

生成配置文件

在项目中新建doc文件夹,在doc文件夹中打开Power Shell(Shift+右键,选择在此处打开Power Shell窗口),键入

1
doxygen -g

会在当前目录下生成Doxyfile文件,该文件是Doxygen工程的配置文件,里面含有一些配置信息。

修改配置信息

  • 修改 PROJECT_NAME 等其他一些有关的项目信息;

  • 设置 INPUT ,这个标记创建一个以空格分隔的所有目录的列表,这个列表包含需要生成文档的 C/C++ 源代码文件和头文件。例如,请考虑以下代码片段:
    INPUT = ../src ../include
    如果源代码层次结构是嵌套的,而且需要为所有层次上的 C/C++ 文件生成文档,就把 RECURSIVE 标记设置为 Yes.
    如果注释中含有中文,将 INPUT_ENCODING 从默认的UTF-8改为GBK。

  • 设置 OUTPUT_DIRECTORY 即文档的输出目录;

  • GENERATE_LATEX 从默认的 YES 改为 NO,接下来,修改HTML的显示方式,将 DISABLE_INDEXGENERATE_TREEVIEW 从默认的 NO 均改为 YES。

  • EXTRACT_ALL 从默认的NO改为YES,这个标记告诉 doxygen,即使各个类或函数没有文档,也要提取信息。必须把这个标记设置为 Yes。

  • EXTRACT_PRIVATE 标记设置为Yes。否则,文档不包含类的私有数据成员。

  • EXTRACT_STATIC 标记设置为 Yes。否则,文档不包含文件的静态成员(函数和变量)。

  • 如果需要中文文档,将 OUTPUT_LANGUAGE 标记设置为Chinese。

  • 如果要添加公式支持,将 USE_MATHJAX 标记设置为YES。

生成文档

在Power Shell中键入

1
doxygen .\Doxyfile

配置文件参考

Doxyfile Example

常用命令

  1. 命令
    • @file 档案的批注说明
    • @author 作者的信息
    • @brief 用于class 或function的简易说明
    • @param 主要用于函数说明中,后面接参数的名字,然后再接关于该参数的说明
    • @return 描述该函数的返回值情况
    • @retval 描述返回值类型
    • @note 注解
    • @attention 注意
    • @warning 警告信息
    • @enum 引用了某个枚举,Doxygen会在该枚举处产生一个链接
      eg:@enum CTest::MyEnum
    • @var 引用了某个变量,Doxygen会在该枚举处产生一个链接
      eg:@var CTest::m_FileKey
    • @class 引用某个类,格式:@class [] []
      eg: @class CTest “inc/class.h”
    • @exception 可能产生的异常描述
      eg: @exception 本函数执行可能会产生超出范围的异常
  2. 字体

    • word``` 用斜体italics强调单词word,如果要让多个单词斜体,用 ```multiple words```
      1
      - ```\b word``` 用黑体bold强调单词word,如果要让多个单词黑体,用    ```<b>multiple words</b>
    • word``` 用打印机字体typewriter显示单词word,一般用来引用代码中的单词。 跟```word```等价,如果有多个单词,用```word```。
      1
      2
      3
      4
      5
      6
          - 
      3. 公式
      - 注意要将*USE_MATHJAX* 标记设置为YES,
      - 行内公式:将公式写在一对```\f$```之间。
      eg: ```The distance between \f$(x_1,y_1)\f$ and \f$(x_2,y_2)\f$ is
      \f$\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\f$.
    • 行间公式:将公式写在一对

      1
      eg:

      \f[
      |I_2|=\left| \int_{0}^T \psi(t)

             \left\{ 
                u(a,t)-
                \int_{\gamma(t)}^a 
                \frac{d\theta}{k(\theta,t)}
                \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi
             \right\} dt
          \right|
      

      ]
      ```

    • 参考Doxygen-Including formulas
  3. 表格

  4. 图片

Reference