源代码文档生成 Doxygen介绍(转载)
源代碼文檔生成 Doxygen介紹(轉載) 收藏
Doxygen介紹
?
一、Doxygen介紹
在項目開發過程中最重要的是如何和團隊中其它成員溝通,如何在項目完成后減低維護成本,隨著公司的人員流動,怎樣使新員工快速熟悉以前的項目?解決這些問題最重要的資料就是文檔和代碼,但是如果文檔和代碼不同步,則會適得其反。Doxygen能夠很好的解決代碼和文檔同步問題,在代碼中加入有@標識符的注釋,修改代碼時實時修改注釋,然后通過Doxygen可以生成更新后的文檔。
?
Doxygen是基于GPL的開源項目,是一個非常優秀的文檔系統,當前支持在大多數unix(包括linux),windows家族,Mac系統上運行,完全支持C++, C, Java, IDL(Corba和Microsoft 家族)語言,部分支持PHP和C#語言,輸出格式包括HTML、latex、RTF、ps、PDF、壓縮的HTML和unix manpage,Doxygen軟件可以從這里下載,軟件本身用法非常簡單。
?
二、Doxygen安裝
1、在Windows里面安裝和使用
Windows下安裝包可以在https://olex.openlogic.com/packages/doxygen#1894下載安裝,最新版本為1.5.6。
?
?
第一步,配置Doxygen,選擇Wizard,填寫源代碼目錄,生成目標文件目錄
?
選擇All entities,c++ output
?
?
選擇prpare for compressed HTML
?
?
?
?
?
第二步,保存配置文件
第三步,選擇目錄
第四步,點擊Start,開始生成文件。
?
在完成后,可以在目標目錄下可以看到目錄html,在該目錄下點擊index.html,就可以瀏覽生成后的文檔,如果想要生成單一的chm文件,下載chm制作精靈來制作。
?
2、在Carbide c++中安裝
Carbide c++ 中使用doxygen:打開Help -> Software Updates -> Find and Install... -> Search for new features to install -> Next -> New Remote Site...,
url輸入http://download.gna.org/eclox/update,如下圖1所示,然后選擇Finish,等下載完成后,選擇安裝,安裝完后重啟carbide c++,這樣可以在carbide c++工具欄中找到@圖形。
?
配置Doxygen更新
?
?
?
三、Doxygen語法
1. 模塊定義(單獨顯示一頁)
/*
?* @defgroup 模塊名 模塊的說明文字
?* @{
?*/
?
?... 定義的內容 ...
?
/** @} */ // 模塊結尾
?
2. 分組定義(在一頁內分組顯示)
/*
?* @name 分組說明文字
?* @{
?*/
?
?... 定義的內容 ...
?
/** @} */
?
3. 變量、宏定義、類型定義簡要說明
/** 簡要說明文字 */
#define FLOAT float
?
/** @brief 簡要說明文字(在前面加 @brief 是標準格式) */
#define MIN_UINT 0
?
/*
?* 分行的簡要說明 /n
?*? 這是第二行的簡要說明
?*/
int b;
?
4. 函數說明
/*
?* 簡要的函數說明文字
?*? @param [in] param1 參數1說明
?*? @param [out] param2 參數2說明
?*? @return 返回值說明
?*/
int func(int param1, int param2);
?
/*
?* 打開文件 /n
?*? 文件打開成功后,必須使用 ::CloseFile 函數關閉。
?*? @param[in] file_name 文件名字符串
?*? @param[in] file_mode 文件打開模式字符串,可以由以下幾個模塊組合而成:
?*? - r 讀取
?*? - w 可寫
?*? - a 添加
?*? - t 文本模式(不能與 b 聯用)
?*? - b 二進制模式(不能與 t 聯用)
?*? @return 返回文件編號
?*? - -1 表示打開文件失敗
?
?*? @note 文件打開成功后,必須使用 ::CloseFile 函數關閉
?*? @par 示例:
?*? @code
??? // 用文本只讀方式打開文件
??? int f = OpenFile("d://test.txt", "rt");
?*? @endcode
?
?*? @see ::ReadFile ::WriteFile ::CloseFile
?*? @deprecated 由于特殊的原因,這個函數可能會在將來的版本中取消。
?*/
int OpenFile(const char* file_name, const char* file_mode);
?
5. 枚舉類型定義
/** 枚舉常量 */
typedef enum TDayOfWeek
{
SUN = 0, /**<? 星期天(注意,要以 “<” 小于號開頭) */
MON = 1, /**<? 星期一 */
TUE = 2, /**<? 星期二 */
WED = 3, /**<? 星期三 */
THU = 4, /**<? 星期四 */
FRI = 5, /**<? 星期五 */
SAT = 6? /**<? 星期六 */
}
/** 定義類型 TEnumDayOfWeek */
TEnumDayOfWeek;?
6. 項目符號標記
? /*
?? *? A list of events:
?? *??? - mouse events
?? *???????? -# mouse move event
?? *???????? -# mouse click event/n
?? *??????????? More info about the click event.
?? *???????? -# mouse double click event
?? *??? - keyboard events
?? *???????? -# key down event
?? *???????? -# key up event
?? *
?? *? More text here.
?? */
?
結果為:
A list of events:
mouse events
mouse move event
mouse click event
More info about the click event.
mouse double click event
keyboard events
key down event
key up event
More text here.
代碼示范:
/*
?* @defgroup EXAMPLES 自動注釋文檔范例
?* @author? 沐楓
?* @version 1.0
?* @date??? 2004-2005
?* @{
?*/
/*
?* @name 文件名常量
?* @{
?*/
/** 日志文件名 */
#define LOG_FILENAME "d://log//debug.log"
/** 數據文件名 */
#define DATA_FILENAME "d://data//detail.dat"
/** 存檔文件名 */
#define BAK_FILENAME "d://data//backup.dat"
/** @}*/ // 文件名常量
/*
?* @name 系統狀態常量
?*? @{
?*/
?
/** 正常狀態 */
#define SYS_NORMAL 0
/** 故障狀態 */
#define SYS_FAULT 1
/** 警告狀態 */
#define SYS_WARNNING 2
/** @}*/ // 系統狀態常量
/** 枚舉常量 */
typedef enum TDayOfWeek
{
??????? SUN = 0, /**< 星期天 */
??????? MON = 1, /**< 星期一 */
??????? TUE = 2, /**< 星期二 */
??????? WED = 3, /**< 星期三 */
??????? THU = 4, /**< 星期四 */
??????? FRI = 5, /**< 星期五 */
??????? SAT = 6? /**< 星期六 */
}
/** 定義類型 TEnumDayOfWeek */
TEnumDayOfWeek;?
/** 定義類型 PEnumDayOfWeek */
typedef TEnumDayOfWeek* PEnumDayOfWeek;
/** 定義枚舉變量 enum1 */
TEnumDayOfWeek enum1;???????
/** 定義枚舉指針變量 enum2 */
PEnumDayOfWeek p_enum2;
/*
?* @defgroup FileUtils 文件操作函數
?* @{
?*/
/*
?* 打開文件 /n
?*? 文件打開成功后,必須使用 ::CloseFile 函數關閉。
?*? @param[in] file_name 文件名字符串
?*? @param[in] file_mode 文件打開模式字符串,可以由以下幾個模塊組合而成:
?*? - r 讀取
?*? - w 可寫
?*? - a 添加
?*? - t 文本模式(不能與 b 聯用)
?*? - b 二進制模式(不能與 t 聯用)
?*? @return 返回文件編號
?*? - -1 表示打開文件失敗
?
?*? @note 文件打開成功后,必須使用 ::CloseFile 函數關閉
?*? @par 示例:
?*? @code
??? // 用文本只讀方式打開文件
??? int f = OpenFile("d://test.txt", "rt");
?*? @endcode
?
?*? @see ::ReadFile ::WriteFile ::CloseFile
?*? @deprecated 由于特殊的原因,這個函數可能會在將來的版本中取消。
?*/
int OpenFile(const char* file_name, const char* file_mode);
/*
?* 讀取文件
?*? @param[in] file 文件編號,參見:::OpenFile
?*? @param[out] buffer 用于存放讀取的文件內容
?*? @param[in] len 需要讀取的文件長度
?*? @return 返回讀取文件的長度
?*? - -1 表示讀取文件失敗
?
?*? @pre /e file 變量必須使用 ::OpenFile 返回值
?*? @pre /e buffer 不能為 NULL
?*? @see ::OpenFile ::WriteFile ::CloseFile
?*/
int ReadFile(int file, char* buffer, int len);
/*
?* 寫入文件
?*? @param[in] file 文件編號,參見:::OpenFile
?*? @param[in] buffer 用于存放將要寫入的文件內容
?*? @param[in] len 需要寫入的文件長度
?*? @return 返回寫入的長度
?*? - -1 表示寫入文件失敗
?
?*? @pre /e file 變量必須使用 ::OpenFile 返回值
?*? @see ::OpenFile ::ReadFile ::CloseFile
?*/
int WriteFile(int file, const char* buffer, int len);
/*
?* 關閉文件
?*? @param file 文件編號,參見:::OpenFile
?*? @retval 0? 為成功
?*? @retval -1 表示失敗
?
?*? @see ::OpenFile ::WriteFile ::ReadFile
?*? @deprecated 由于特殊的原因,這個函數可能會在將來的版本中取消。
?*/
int CloseFile(int file);
/** @}*/ // 文件操作函數
/** @}*/ // 自動注釋文檔范例
生成的chm文檔截圖:
發表于 @ 2009年05月15日 13:45:00 | 評論( 0 ) | 舉報| 收藏
原文:http://blog.csdn.net/kim_fu/archive/2009/05/15/4188627.aspx
總結
以上是生活随笔為你收集整理的源代码文档生成 Doxygen介绍(转载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小心VB.NET中的除运算符/和/
- 下一篇: VB 禁止修改系统时间