最近研究了下linux 下的doxygen的使用,很有意思,把經驗分享下:
1. 安裝 doxygen
安裝包 doxygen-1.7.4.linux.bin.tar.gz(可在官網下載)
命令:
1) tar xvfz doxygen-1.7.4.linux.bin.tar.gz
2) cd doxygen-1.7.4
3) ./configure
4) make
5) make install
安裝後需留意下 doxyg 的路徑,例如: /usr/bin/doxygen 2. 配置 Doxygen 工作環境
步驟:
6) 進入項目目錄( test 為例說明) cd test/
7) 組建組態檔案 Doxygen –g
l 預設產生的設定檔名為 "Doxyfile" ,也可以採用 "doxygen -g your-cfg-filename" 命令格式指定所產生的設定檔名。如無特殊需要,採用預設的設定檔名即可。
l Doxyfile 檔案內容非常多,大概 1000 多行,不過其中約 4/5 都是注釋,每個配置選項都有一段詳細的注釋。日後,如果對 Doxygen 各配置選項的意義有一定瞭解,可以在組建組態檔案的命令中添加 "-s" 選項,產生不含注釋的設定檔,操作如下: $ doxygen -s -g
3 )設定檔的相應設定 ,這裡已經有個模板 Doxyfile(test 檔案夾下 ) ,可以根據需要更改相應設定
# 項目名稱,將作為於所產生的程式文檔首網頁標題
PROJECT_NAME = “Test
# 文檔版本號碼,可對應於項目版本號碼,譬如 svn 、 cvs 所產生的項目版本號碼
PROJECT_NUMBER = "1.0.0
# 程式文檔輸出目錄
OUTPUT_DIRECTORY = doc/
# 程式文檔語言環境
OUTPUT_LANGUAGE = Chinese
# 如果是製作 C 程式文檔,該選項必須設為 YES ,否則預設產生 C++ 文檔格式
OPTIMIZE_OUTPUT_FOR_C = YES
# 對於使用 typedef 定義的結構體、枚舉、聯合等資料類型,只按照 typedef 定義的類型名進行文檔化
TYPEDEF_HIDES_STRUCT = YES
# 在 C++ 程式文檔中,該值可以設定為 NO ,而在 C 程式文檔中,由於 C 語言沒有所謂的域 / 名字空間這樣的概念,所以此處設定為 YES
HIDE_SCOPE_NAMES = YES
# 讓 doxygen 靜悄悄地為你產生文檔,只有出現警告或錯誤時,才在終端輸出提示資訊
QUIET = YES
# 只對標頭檔中的文檔化資訊產生程式文檔
FILE_PATTERNS = *.h
# 遞迴遍曆目前的目錄的子目錄,尋找被文檔化的程式源檔案
RECURSIVE = YES
# 樣本程式目錄
EXAMPLE_PATH = example/
# 樣本程式的頭文檔 (.h 檔案 ) 與實現文檔 (.c 檔案 ) 都作為程式文檔化對象
EXAMPLE_PATTERNS = *.c /
*.h
# 遞迴遍曆樣本程式目錄的子目錄,尋找被文檔化的程式源檔案
EXAMPLE_RECURSIVE = YES
# 允許程式文檔中顯示本文檔化的函數相互調用關係
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
REFERENCES_LINK_SOURCE = YES
# 不產生 latex 格式的程式文檔
GENERATE_LATEX = NO
# 在程式文檔中允許以圖例形式顯示函數調用關係,前提是你已經安裝了 graphviz 軟體包
HAVE_DOT = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES
# 讓 doxygen 從設定檔所在的檔案夾開始,遞迴地搜尋所有的子目錄及源檔案
RECURSIVE = YES
# 在最後產生的文檔中,把所有的原始碼包含在其中
SOURCE BROWSER = YES
$ 這會在 HTML 文檔中,添加一個側邊欄,並以樹狀結構顯示包、類、介面等的關係
GENERATE TREEVIEW = ALL 3. 程式源碼文檔化
準備好 Doxygen 的工作環境後,就需要根據 Doxygen 所定義的注釋規則,對程式源碼進行文檔化。換句話說,就是在對程式源碼添加註釋時,要按照 Doxygen 的遊戲規則來搞。
Doxygen 的注釋類型可分為:
l 行間注釋:備註陳述式不與程式源碼出現在同一行,主要用於注釋標頭檔中出現的結構體 (struct) 、枚舉 (enum) 、聯合 (uion) 等資料類型,以及程式介面的功能與使用約定;
l 行內注釋:備註陳述式與程式源碼出現在同一行內,主要用於代碼的局部注釋。
注釋的種類有很多,下面是其中的一種:
Doxygen 認可的行間注釋標記見下例:
/**
* 這是行間注釋標記樣本
*/
Doxygen 認可的行內注釋標記見下例:
typedef struct {
double coord[3]; /// 這是行內注釋樣本
}M2_3D_Point; 4.