doxygen 生成源碼文檔


使用doxygen 生成源代碼的文檔是相當方便的,本文就簡單整理下doxygen的使用說明

1. 安裝

 關於安裝的問題不做特殊的說明,這里直接使用命令安裝, 源碼安裝不做介紹

   ubuntu: 

sudo apt-get install doxygen

  centos

sudo yum install doxygen

 

2. 配置文件配置

 關於doxygen主要的部分就在於配置文件的配置, doxygen相當強大,所以配置文件內容有點多。這里只介紹一部分,大家有興趣可以繼續深入研究

 (1) 重要標記

  配置文件采用 <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 等子目錄。如果這個標記設置為 Yesdoxygen 就會遞歸地搜索整個層次結構並提取信息。

  <EXTRACT_ALL>這個標記告訴 doxygen,即使各個類或函數沒有文檔,也要提取信息。必須把這個標記設置為 Yes

  <EXTRACT_PRIVATE>把這個標記設置為 Yes。否則,文檔不包含類的私有數據成員。

  <EXTRACT_STATIC>把這個標記設置為 Yes。否則,文檔不包含文件的靜態成員(函數和變量)。

   (2) 文檔輸出格式  

  除了 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 輸出)。

   (3) 圖形和圖標生成

  在默認情況下,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 會生成協作圖(還有繼承圖),顯示各個類成員(即包含)及其繼

  承層次結構。

   (4) 代碼文檔樣式  

  每個代碼元素有兩種描述:簡短的和詳細的。簡短描述通常是單行的。函數和類方法還有第三種描述體內描述(in-body description),這種描述把在函數體中找到的所有注釋塊集中在一起。比較常用的一些 doxygen 標記和注釋樣式如下:

  • 簡短描述:使用單行的 C++ 注釋,或使用 <\brief> 標記。
  • 詳細描述:使用 JavaDoc 式的注釋 /** … test … */(注意開頭的兩個星號 [*])或 Qt 式的注釋 /*! … text … */
  • 體內描述:類、結構、聯合體和名稱空間等 C++ 元素都有自己的標記,比如 <\class><\struct><\union> 和 <\namespace>

  為了為全局函數、變量和枚舉類型生成文檔,必須先對對應的文件使用 <\file> 標記。清單 12 給出的示例包含用於四種元素的標記:函數標記(<\fn>)、函數參數標記(<\param>)、變量名標記(<\var>)、用於 #define 的標記(<\def>)以及用來表示與一個代碼片段相關的問題的標記(<\warning>)。

  一下是一些doxygen自建的命令,可以在代碼注釋中加入

  @addtogroup 添加到一個組。
  @brief  概要信息
  @deprecated 已廢棄函數
  @details  詳細描述
  @note  開始一個段落,用來描述一些注意事項
  @par  開始一個段落,段落名稱描述由你自己指定
  @param  標記一個參數的意義
  @code .. @endcode 包含一段代碼
  @fn  函數說明
  @ingroup 加入到一個組
  @return  描述返回意義
  @retval  描述返回值意義
  @include 包含文件

3. 其他

  doxygen功能還是很強大的,對於c++和java的代碼結構生成以及圖標生成很好用;可以很方便的看到代碼結構,對於c暫時沒有生成出對應的圖表,后續還需要繼續研究下。 后續get到其他技能繼續在后面補充


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM