1 doxygen是大名鼎鼎代碼文檔工具。
下載地址:www.doxygen.org
安裝它。http://www.stack.nl/~dimitri/doxygen/download.html 可下載.
2 Graphviz
這個工具配合doxygen使用,可以提取函數,模塊之間的調用關,非常清晰。
下載地址:http://www.graphviz.org/Download..php
下面是Graphviz提取出來的一些關系圖:




3 htmlhelp
這個工具把doxygen生成的html文件,轉化為一個CHM文件,看起來方便些。
下載地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=00535334-c8a6-452f-9aa0-d597d16580cc&displaylang=en
安裝它。
全部安裝后就可以開始使用了。
運行doxygen wizard.exe
運行doxywizard.exe,這時按照doxygen根目錄下的文檔(doxygen_manual-1.5.2.chm)中 Doxywizard usage一節的說明設置即可。主要包括,源碼路徑、工作路徑、輸出路徑等。
點開始,即可生成文檔
最后對文檔生成過程中遇到的一些問題進行說明:
1 中文問題:中文注釋在文檔中是亂碼。
解決:在expert中的INPUT選項頁的INPUT_ENCODEING中填入“GB2312”,這樣基于GB的文本編輯器生成的代碼就可以正常使用了。

2 圖形問題:無法繪制類圖協作圖等圖形。
首先確保安裝了graphviz,注意不是wingraphviz,后者是一個graphviz的com封裝,但是doxygen并不是基于它開發的,所以裝了也沒用。然后在 expert的Dot頁DOT_PATH中填入graphviz的安裝路徑。接著在wizard的diagram中選擇需要生成的圖形類別就可以了。
如果出現無法包含.map文件的錯誤,可以將工作目錄設置成html,并將html中所有文件都清除再試。這個問題的原因還不太確定。
3 輸出chm的問題:如何輸出.chm文件
1. 你必須安裝微軟或其相兼容的chm編譯系統。通常為HTML Help Workshop。
2. 首先在[Wizard]的Output頁面中,選擇HTML,然后選擇到prepare for compressed HTML(.chm)。
3. 其次在[Expert]的HTML頁面中,將HHC_LOCATION指向微軟的hhc工具。通常為C:/Program Files/HTML Help Workshop/hhc.exe。然后點擊OK,保存,編譯即可。

HHC_LOCATION中輸入hhc.exe文件的路徑。hhc.exe可以通過安裝HTML Help Workshop獲得。

4 如何像MSDN那樣在左邊的樹中顯示函數列表?
打開[Expert]的HTML頁面,然后選中TOC_EXPAND即可。

5 如何去掉CHM附帶的CHI文件?
注 意在默認情況下,CHM會有一個CHI文件,似乎是用來加速索引的。我本人也遇到過很多用戶僅僅上傳了CHM,而沒有上傳CHI文件,導致無法正常顯示的 情況。我不知道是否可以通過工具重建CHI文件,但是我覺得關閉這個功能即可。打開[Expert]的HTML頁面,取消GENERATE_CHI 即可。
6 如何像MSDN那樣右邊每頁顯示一個函數?
這 個問題其實比較棘手,在[Expert]中的 Project頁面,下面有一個選項叫做SEPARATE_MEMBER_PAGES,把這個選項選中,這樣每個函數就是一個頁。但是會有一個問題,那就 是右邊頁面的旁邊多了所有函數的列表。很遺憾,經過研究,這個確實無法去掉。我的解決方法就是自己編譯一下doxygen,在 memberlist.cpp的writeDocumentationPage函數中將 container->writeQuickMemberLinks(ol,md);連同附近幾行屏蔽掉即可。
7 如何在CHM中去掉當選擇SUBGROUPING后去掉分組的組信息?
這 個功能就是在chm的左邊樹中直接列出函數列表,而不用點擊看右邊頁面了。這個功能需要修改源代碼。在index.cpp中,屏蔽 writeGroupIndexItem函數的 Doxygen::indexList.addContentsItem,Doxygen::indexList.incContentsDepth和 Doxygen::indexList.decContentsDepth();即可。
8 如何修改或者去掉右下腳Generated at ...的文字?
打 開[Expert...]的HTML頁面,然后在HTML_FOOTER中指定相應的HTML文件即可。注意HTML_FOOTER中至少包含BODY和 HTML結束標記。即一個最小的尾部HTML至少是這樣</BODY></HTML>。同理,如果你要指定了 HTML_HEADER,他至少包含<HTML><HEAD></HEAD><BODY>
9 如何生成組?
組 就是可以把同類的函數放到一個根下的顯示方式。doxygen支持grouping,即你可以把相關的代碼通過標志,放到同一個組中,便于查看。這主要是 通過幾個內置語法命令。首先通過@defgroup定義一個組,然后要把分組的函數或者類等,通過標志@ingroup加入相應的組。這樣,相應的函數就 被放置在同一個組中。
10 如何生成中文幫助?
點擊[Expert],在頁Project 的OUTPUT_LANGUAGE,選擇Chinese,這樣輸出的幫助提示信息就是中文。具體中文提示信息的文字在源代碼中。

11 如何徹底解決DoxyGen的輸出中文chm的亂碼問題?
DoxyGen的實現中大概有三處編碼的設置。首先是,doxyfile,也就是配置文件。其次,INPUT_ENCODING,也就是DoxyGen需要解析的輸入文件的編碼。最后,就是輸出的編碼。譬如CHM左邊的索引編碼。
首先是chm的標題亂碼,這個比較好解決,因為DoxyWizard使用QT做的界面,它內部做了轉換,所以在DoxyWizard中輸入中文,在保存的時 候,他自己做了轉碼,導致doxyfile中的最終的保存信息不正確。這個時候只需要用記事本打開doxyfile配置文件,輸入相應中文即可。注意保存 的時候保存成ANSI編碼即可。保存成其他格式的話可能需要去掉BOM,比較麻煩,沒研究了。這個相應的編碼設置在[Expert...]中,頁 Project 的 DOXYFILE_ENCODING,不輸入或者默認為UTF-8都行。
其次是右邊內容亂碼,這個多半是因為你沒有配置好輸入的文件編碼類型造成的。在[Expert...]的Input頁面中,有一個 INPUT_ENCODING,這個選項表示輸入文件的編碼方式,這要和你處理的源文件格式一致。對于我們來說(使用vs的人),一般設置為 GB2312。當然,再次聲明,編碼方式取決于源文件的編碼方式。如果文件編碼已經是UTF-8了,然而你還將其設置成GB2312,那么DoxyGen 會將UTF-8當成ANSI再進行一次UTF-8轉換,自然會出錯了。
最后也是經常遇到的問題就是DoxyGen生成的CHM文件的左邊樹目錄的中文變成了亂碼。這個只需要將chm索引的編碼類型修改為GB2312即可。在 HTML的CHM_INDEX_ENCODING中輸入GB2312即可。然而這種方法下,還有一個瑕疵之處,就是chm的搜索頁的搜索結果中顯示的中文 文字卻變成亂碼了。這是因為DoxyGen默認開啟了HTML Help Workshop的Full-text search全文搜索選項,他在進行全文搜索的時候,應該是打開文件然后按照ANSI進行搜索的,(資料表示HHW不支持UTF-8,僅支持ISO- 8859-1或者windows-1252編碼。)而Doxygen生成的右邊界面統一是UTF-8,這自然出現了問題。而在這種情況下做全文搜索,理論 上只能搜索英文。
我們的解決方案只能是重新編譯DoxyGen代碼,為了滿足搜索,只要保證右邊的頁面文件不是UTF-8即可。我們首先修改 writeDefaultHeaderFile這個函數的代碼,將其charset=GB2312。然后在 TranslatorDecoder的構造函數中修改m_toUtf8 = (void*)-1;即屏蔽文本寫入時最終的轉換函數。最后刪除INPUT_ENCODING的設置或者輸入UTF-8。這樣會使DoxyGen認為我們 的文本是UTF-8的,從而不用進行轉換。生成替換原始的DoxyGen即可。
另外需要補充的是,還有一種方案是不用修改作者的源代碼,但是需要將DoxyGen生成的右邊的HTML文件使用工具(如iconv)手工轉換成GB2312,然后再使用HTML Help Workshop生成,網上有篇文章介紹過,我測試一下,也是沒有問題的。
最后,doxygen是一個開源項目,并且支持vs2005項目,這樣一來,如果你覺得哪里不順手,完全可以把代碼下載后自行編譯。
這樣,基本上就能夠用doxygen生成漂亮的文檔了。代碼方面,doxygen支持多種格式的注釋風格,根據manual選擇自己喜歡的就好。