- 編程技能:編寫可讀可維護的代碼
- 編程技巧:編寫優化高效的代碼
簡介
開源跨平臺的注釋文檔生成工具。
安裝
- 下載
- 解壓
tar zxvf doxygen壓縮包
- 切換到解壓后的doxygen主目錄
cd doxygen解壓目錄
- 創建
build
目錄mkdir build
- 切換到
build
目錄cd build
- 生成Linux Makefile
cmake -G "Unix Makefiles" ../
- 編譯
make
- 安裝
make install
使用
- 進入項目目錄
cd 項目目錄
- 生成配置文件
doxygen –g
(默認配置文件名為Doxyfile
) - 生成文檔文件
doxygen
配置文件
# 項目名稱,將作為于所生成的程序文檔首頁標題
PROJECT_NAME = “Test”
# 文檔版本號,可對應于項目版本號,譬如 svn、cvs 所生成的項目版本號
PROJECT_NUMBER = "1.0.0
# 程序文檔輸出目錄
OUTPUT_DIRECTORY = /home/user1/docs
# 程序文檔輸入目錄
INPUT = /home/user1/project/kernel
# 程序文檔語言環境
OUTPUT_LANGUAGE = Chinese
DOXYFILE_ENCODING = UTF-8
# 只對頭文件中的文檔化信息生成程序文檔
FILE_PATTERNS =
# 遞歸遍歷當前目錄的子目錄,尋找被文檔化的程序源文件
RECURSIVE = YES
# 如果是制作 C 程序文檔,該選項必須設為 YES,否則默認生成 C++ 文檔格式
OPTIMIZE_OUTPUT_FOR_C = YES
#提取信息,包含類的私有數據成員和靜態成員
EXTRACT_ALL = yes
EXTRACT_PRIVATE = yes
EXTRACT_STATIC = yes
# 對于使用 typedef 定義的結構體、枚舉、聯合等數據類型,只按照 typedef 定義的類型名進行文檔化
TYPEDEF_HIDES_STRUCT = YES
# 在 C++ 程序文檔中,該值可以設置為 NO,而在 C 程序文檔中,由于 C 語言沒有所謂的域/名字空間這樣的概念,所以此處設置為 YES
HIDE_SCOPE_NAMES = YES
# 讓 doxygen 靜悄悄地為你生成文檔,只有出現警告或錯誤時,才在終端輸出提示信息
QUIET = YES
# 遞歸遍歷示例程序目錄的子目錄,尋找被文檔化的程序源文件
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
#在最后生成的文檔中,把所有的源代碼包含在其中
SOURCE BROWSER = YES
$這會在HTML文檔中,添加一個側邊欄,并以樹狀結構顯示包、類、接口等的關系
GENERATE TREEVIEW = ALL
No. | 文件格式 | 選項 | 值 | 默認值 | 作用 | 相關選項 |
---|---|---|---|---|---|---|
1 | LaTeX | GENERATE_LATEX |
YES/NO |
YES |
產生LaTeX的文件 |
LATEX_OUTPUT 輸出目錄,默認latex
|
2 | rtf | GENERATE_RTF |
YES/NO |
YES |
產生rtf的文件 |
RTF_OUTPUT 輸出目錄,默認rtf
|
3 | man | GENERATE_MAN |
YES/NO |
NO |
Unix Man Page 格式 |
MAN_OUTPUT 輸出目錄,默認man
|
2 | rtf | GENERATE_XML |
YES/NO |
NO |
產生xml的文件 |
XML_OUTPUT 輸出目錄,默認xml
|
語法簡介
- 簡單注釋
- 單行注釋:
///
或者//!
- 多行注釋:
/**
或者/*!
- 文件注釋
/**
* @file 文件名
* @brief 簡介
* @details 細節
* @mainpage 工程概覽
* @author 作者
* @version 版本號
* @date 年-月-日
*/
- 全局常量/變量/宏定義/結構體定義/類定義的注釋
- 代碼前注釋
/// 注釋
全局常量/變量/宏定義/結構體定義/類定義
例如:
/// 緩存大小
#define BUFSIZ 1024*4
- 代碼后注釋
全局常量/變量/宏定義/結構體定義/類定義 ///< 注釋
例如:
#define BUFSIZ 1024*4 ///< 緩存大小
- 函數注釋
/**
* @brief 函數簡介
*
* @param 形參 參數說明
* @param 形參 參數說明
* @return 返回值說明
*/
例如:
/**
* @brief 主函數
* @details 程序唯一入口
*
* @param argc 命令參數個數
* @param argv 命令參數指針數組
* @return @c 0 程序執行成功
* @c 1 程序執行失敗
*/
int main(int argc, char* argv[]){
}
命令 | 生成字段名 |
---|---|
@param |
參數 |
@return |
返回值 |
@p |
參數(后面緊接單詞是參數) |
@c |
代碼(后面緊接單詞是代碼) |
- 其它常用命令
命令 | 生成字段名 | 說明 |
---|---|---|
@attention |
注意 | |
@bug |
缺陷 | 鏈接到所有缺陷匯總的缺陷列表 |
@warning |
警告 | |
@see |
參考 | |
@code |
代碼塊開始 | 與@endcode 成對使用 |
@endcode |
代碼塊結束 | 與@code 成對使用 |
@todo |
TODO | 鏈接到所有TODO 匯總的TODO 列表 |