Doxygen生成edk2 CHM


用途

目前为止最新Release edk2-stable202105 MdePkg一共声明了67个头文件,MdeModulePkg一共声明了32个头文件,虽说常用API唯手熟尔,但有时候知道有什么,有个全局的印象,用到的时候才能想到去查,不用自己在子函数里造轮子。UDK2017和UDK02018是有提供生成好的包含MdePkg和MdeModulePkg的CHM文档的,本文记录下基于edk2—stable212105用Doxygen生成CHM踩的坑

Tool部署

需要三个工具:doxygen安装包、graphviz安装包、htmlhelp安装包。其中doxygen是一种开源跨平台的文档系统,doxygen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册

doxygen可以生成好几种格式的文档,要生成.chm格式的手册就必须安装htmlhelp,要生成关系图必须安装依graphviz

doxygen安装包

http://www.doxygen.nl/download.html

graphviz安装包

http://www.graphviz.org/

htmlhelp安装包

https://www.microsoft.com/en-us/download/details.aspx?id=21138

生成机制

Doxygen可以根据固定格式的代码注释生成相对应的*.chm格式的手册。支持的语言有好多种,如C/C++/C#/Objective-C/PHP/Java等。edk2源码主要是C语言,Doxygen可以识别的固定格式注释有以下几种:

/**
* ...text...
*/

///
///...text...
///

/************************************
*   ...text...
************************************/

来看下edk2代码注释的Sample, 所有的函数都使用这样统一格式的注释,还是较为优雅的

/**
  Translate a *.BMP graphics image to a GOP blt buffer. If a NULL Blt buffer
  is passed in a GopBlt buffer will be allocated by this routine using
  EFI_BOOT_SERVICES.AllocatePool(). If a GopBlt buffer is passed in it will be
  used if it is big enough.
  @param [in]      BmpImage      Pointer to BMP file.
  @param [in]      BmpImageSize  Number of bytes in BmpImage.
  @param [in, out] GopBlt        Buffer containing GOP version of BmpImage.
  @param [in, out] GopBltSize    Size of GopBlt in bytes.
  @param [out]     PixelHeight   Height of GopBlt/BmpImage in pixels.
  @param [out]     PixelWidth    Width of GopBlt/BmpImage in pixels.
  @retval RETURN_SUCCESS            GopBlt and GopBltSize are returned.
  @retval RETURN_INVALID_PARAMETER  BmpImage is NULL.
  @retval RETURN_INVALID_PARAMETER  GopBlt is NULL.
  @retval RETURN_INVALID_PARAMETER  GopBltSize is NULL.
  @retval RETURN_INVALID_PARAMETER  PixelHeight is NULL.
  @retval RETURN_INVALID_PARAMETER  PixelWidth is NULL.
  @retval RETURN_UNSUPPORTED        BmpImage is not a valid *.BMP image.
  @retval RETURN_BUFFER_TOO_SMALL   The passed in GopBlt buffer is not big
                                    enough.  The required size is returned in
                                    GopBltSize.
  @retval RETURN_OUT_OF_RESOURCES   The GopBlt buffer could not be allocated.
**/
RETURN_STATUS
EFIAPI
TranslateBmpToGopBlt (
  IN     VOID                           *BmpImage,
  IN     UINTN                          BmpImageSize,
  IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL  **GopBlt,
  IN OUT UINTN                          *GopBltSize,
  OUT    UINTN                          *PixelHeight,
  OUT    UINTN                          *PixelWidth
  );

生成步骤

设置工程工作目录

img

设置编程语言

img

设置输出文件格式

img

设置生成的关系表

img

设置输出的语言和编码

img

设置一些构建的选择项

img

设置输入文件的编码

img

设置是否在.chm中生成源码以供预览

img

设置HTML选项

img

设置Dot选项

img

img

运行生成.chm文件

img

保存工程文件

img

最终效果图

img

img

img


文章作者: Holy Chen
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Holy Chen !
  目录