你有為軟件編寫說明文檔的苦惱嗎?當別人甩給你一個龐大的系統,讓你根據里面的代碼注釋理解后寫出一份完整的開發文檔,你會怎么辦?一個個的看代碼 然后耗時N天來寫嗎?這既是一份苦差事也極其耗時,有沒有更好的辦法呢?比如根據代碼注釋自動生成詳盡的說明文檔……可能有人會說用Javadoc就是 了,要是C/C++、Python、C#等語言寫的軟件呢?有沒有類似Javadoc的東西?
Yes,當然有,Doxygen就是這樣一個能滿足你需求的工具。Doxygen是一種開源跨平台的,以類似JavaDoc風格描述的文檔系統,完全支持C、C++、Java、Objective-C和IDL語言,部分支持PHP、C#。注釋的語法與Qt-Doc、KDoc和JavaDoc兼容。Doxgen可以從一套歸檔源文件開始,可將程序中的特定批注轉換成為說明文件,生成HTML格式的在線類瀏覽器,或離線的LATEX、RTF參考手冊。被Boost、OpenCasCade等諸多項目作為文檔生成工具的不二選擇。
由於我主要的開發語言是Java,所以在這里主要說明Doxygen在Eclipse里的集成及使用步驟。
1. 安裝doxygen工具
在集成之前需要安裝doxygen工具,下載方法有兩種:目前最新版是1.8.6
(1)官方網站下載(建議):Doxygen:Downloads
(2)在sourceforge下載:Doxygen
2.安裝doxygen在Eclipse中的插件:Eclox
建議在其官方網站下載:Eclox
下載eclox_0.8.0.zip后解壓,安裝插件的方法也有幾種:
1. 將eclox_0.8.0中的plugins和features目錄里的內容,移動到eclipse中的plugins和features目錄里重啟即可,最簡單。
2. 通過links方法安裝插件(建議該方法,具體可Google)。
2. 采用Eclipse里的update manager安裝插件,具體方法請看這里。
注意:網上都說同時要下載eclox.update_0.8.0.zip並解壓安裝,其實完全沒必要,eclox.update_0.8.0只是版本的更新過程,里面包含的都是最新版本和歷史版本插件,而我們需要的只是最新版本的,故不需要下載此壓縮文件。
如果這兩個步驟都完成后,重啟eclipse之后,就可以發現在工具欄上多了一個@的圖標,如下圖所示,表示安裝成功。
3. 在Eclipse中配置doxygen運行環境
工具欄上 windows->preferences->Doxygen, 點擊Add,添加doxygen安裝目錄中的bin目錄,如下圖所示:
到此doxygen在Eclipse中的集成工作就完成了。
4. 使用Doxygen生成文檔過程舉例
4.1 自動生成工程的doxygen文件
首先選擇你要生成文檔的工程,
然后File->New->others....,出現下面的選擇框,選擇Other中的Doxyfile。
點擊next,配置Doxygen,定好文件的名字,點擊Finish就OK了。
當然到此還沒結束,最重要的一步還沒完成,就是自動生成doxygen文件后需要我們自己配置各個參數和選項。
4.2 配置doxygen文件參數和選項
配置Doxygen文件參數也有三種方式:
4.2.1 使用Eclipse中集成的doxygen editor進行修改
在Eclipse中打開剛剛自動生成的doxygen文件,默認的配置如下:
比如在Eclipse中我用的配置選項如下:
建議大家如果不理解各個選項,可以嘗試每個選項的生成效果,以找出自己最想要的文檔格式。
4.2.2 使用Doxygen安裝程序自帶的GUI工具
找到Doxygen的安裝目錄下的bin目錄里,如下圖所示可以看到有個GUI工具:
打開后如下圖所示:
與Eclipse中大同小異,各個參數選項慢慢琢磨吧,很簡單。
4.2.3 直接用文本編輯器進行修改
針對doxyfile可直接用文本編輯器進行編輯,建議用Notepad++或寫字板等打開,不要用無排版的記事本。
主要有以下內容需關注:
<OUTPUT_DIRECTORY>
:必須在這里提供一個目錄名,例如 /home/user1/documentation,這個目錄是放置生成的文檔文件的位置。如果提供一個不存在的目錄名,doxygen 會以這個名稱創建具有適當用戶權限的目錄。<INPUT>
:這個標記創建一個以空格分隔的所有目錄的列表,這個列表包含需要生成文檔的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 等子目錄。如果這個標記設置為Yes,doxygen 就會遞歸地搜索整個層次結構並提取信息。<EXTRACT_ALL>
:這個標記告訴 doxygen,即使各個類或函數沒有文檔,也要提取信息。必須把這個標記設置為Yes。<EXTRACT_PRIVATE>
:把這個標記設置為 Yes。否則,文檔不包含類的私有數據成員。<EXTRACT_STATIC>
:把這個標記設置為 Yes。否則,文檔不包含文件的靜態成員(函數和變量)。<OUTPUT_LANGUAGE>
:默認 = English,文檔語言(自動生成的文字部分),可以指定為Chinese。<DOXYFILE_ENCODING>
:默認 = UTF-8,默認編碼為UTF-8,這樣可以支持中文。<PROJECT_NAME>
:項目名稱,多個單詞需要使用引號(“”)。<PROJECT_NUMBER>
:項目版本號。
4.3 運行doxygen文件生成最后的文檔
配置完成后在Eclipse中點擊@插件按鈕選擇doxygen配置文件即可生成文檔了。
可以在控制台看到生成詳細過程,如果有如何配置錯誤如指定的路徑或文件不存在等,都會給出提示,按要求重新配置即可。
打開生成文檔里的index.html(如果是html格式),在瀏覽器查看,點擊各個選項查看效果如下:
主界面:
查看某個函數的界面: