Linux下doxygen的使用

doxygen是一種從源代碼生成文檔的工具,支持多種語言。當然,源代碼中需按一定的格式寫註釋,這些註釋的格式也能幫助我們養成很好的註釋習慣,可以嘗試一下。

使用doxygen生成文檔的方法很簡單:

$ doxygen -g –s

$ doxygen

只需兩個簡單命令就可以了。

下面簡單說明一下:

1、在工程目錄下輸入doxygen –s –g doxyconfig,其中doxyconfig爲生成配置的文件名稱,可任意指定,如果不指定,默認生成的配置文件爲Doxyfile。man手冊中沒有詳細說明選項的意思,這裏不妨猜測一下,-s爲simple,-g爲generate,如果不指定-s,則生成的配置文件大約爲63KB,行數約1500左右;反之,則約成10KB,行數約250左右。——此處猜測便根據這些測試而來的。

2、生成配置文件後,會出現提示信息,大意是說那個配置文件已經生成了,現在編輯它,之後輸入doxygen Doxyfile(經實踐證明,可以只輸入doxygen命令)就可以產生工程的文檔了。如果再次使用doxygen生產配置文件,則原來的就配置文件就變成了備份文件,添加後綴名.bak。

3、根據doxygen要求的註釋格式來編寫代碼的註釋,這一步要求比較高,而且工作量比較大。我們在文章後面還要講解的。

下面介紹一下如何編輯生成的配置文件,我們以我們的串口程序爲例子。

 

doxygen的配置文件與大多數linux平臺的配置文件類似,就是一些關鍵字與值,配置文件中的值以YES和NO居多。

DOXYFILE_ENCODING = UTF-8,默認編碼爲UTF-8,這樣可以支持中文。

PROJECT_NAME = “SerialPort”,項目名稱,多個單詞需要使用引號(“”)。

PROJECT_NUMBER = “1.0 beta”,項目版本號。

OUTPUT_DIRECTORY = serialport-html,輸出文檔的目錄,如果爲空,表示在當前目錄,建議寫上表示本工程的有意義的目錄名稱,比如我們就指定目錄名稱爲serialport-html。

OUTPUT_LANGUAGE = English,文檔語言,可以指定爲Chinese。

IMAGE_PATH = image_dir,指定圖片存放的目錄,我們將圖片放到當前目錄下的image_dir目錄中,因爲我們的文檔會出現測試圖片示例。

HTML_OUTPUT= . ,html輸出目錄名稱,默認爲html目錄,如果爲“.”則表明爲上述OUTPUT_DIRECTORY目錄。

GENERATE_LATEX = NO,是否生成LaTeX,默認生成的,但我們不想生成。

好了,我們需要修改的就這麼多,使用上述第2步驟的命令就可以生成一個漂亮的文檔了。此外還有一些常用的設置選項。

INPUT =xxx,代碼文件或目錄,多個文件(目錄)需要以空格隔開,如果不指定,表示當前目錄,但是,如果指定目錄且當前目錄有代碼文件的話,需要使用點號(“.”)表示當前目錄。

FILE_PATTERNS=xxx,指定各種文件,我們常用爲*.cpp *.c *.h,等等。

上面基本就是我們常用的了,如果還想更深入瞭解,請移步到google網站。

下面就是真正需要花費一定時間的工作:爲我們的程序作特定格式的註釋。

doxygen支持多種註釋風格,比如JavaDoc風格,它在C語言塊註釋開始處再添加一個星號(*)構成,如下:

1.           /**

2.            * … text …

3.            */

Qt風格:

	1.           /*!
	2.            * ... text ...
	3.            */

上面兩種方式中間的星號(*)是可選的,不過,個人認爲添加會更美觀一些。

C++風格的,——就是在C++註釋後面再添加“/”:

	1.           ///
	2.           /// ... text ...
	3.           ///

或者是這樣:

	1.           //!
	2.           //!... text ...
	3.           //!

經測試,實際使用中,如果是單行註釋的話,可以使用如下的格式:

	1.           /** ... text ... */
	2.           /**< ... text ... */

這些格式會被doxygen文檔化,如果不想讓它文檔化,可以“破壞”這些格式,比如可以使用“正宗”的C/C++註釋:

	1.           /* ... text ... */
	2.           // ... text ...

上述風格來自doxygen的manual頁面,具體地址爲:

http://www.stack.nl/~dimitri/doxygen/docblocks.html

 

下面介紹一下常用doxygen的命令,更多詳細使用說明,請參考如下地址:

http://www.stack.nl/~dimitri/doxygen/commands.html#cmde

doxygen命令以@或開始,兩種方式均可以。文中以@標記之。

@def 宏定義說明

@fn 函數 函數說明

@param 參數 參數說明

@return 返回值說明(出錯返回什麼值,等等)

@file 文件名

@author 作者

@version 程序版本

@date 日期

@note 註解(注意事項,等)

@warning 警告信息

@bug bug信息

@test 測試示例、信息

@todo 一些未完事宜

(@bug、@test以及@todo等會出現鏈接頁面)

上面這樣適合在函數、文件前面出現。

下面爲生成特殊字體的命令:

@a @e @em:其後的單個字(word)表現爲斜體,以強調作用。如有多個word的話,使用<em>xxx xxx</em>代替。

@b:其後的word爲粗體,多個則使用<b>xxx xxx</b>。

@c @p:字體表現爲打印機字體,多個則使用<tt>xxx xxx</tt>。

 

下面是一些具體的實例。 

在文件開始處的版權聲明及其它信息:

/**

*                      Copyleft (C) 2010  Late Lee

*        This program is tested on LINUX PLATFORM, WITH GCC 4.x.

*        The program is distributed in the hope that it will be

*        useful, but WITHOUT ANY WARRANTY. Please feel free to

*        use the program, and I feel free to ignore the related

*        issues. Any questions or suggestions, or bugs, please

*        contact me at  or e-mail to

*         if you want to do this.

* @file   serialport.c

* @author Late Lee

* @date   Mon Jan 10 2011

*

* @brief  Some utils of the serial port, such as open the port, close

*         the port and setup the port.

* @note   This is a note.

* @warning This is a warning.

* @bug    This is a bug.

*/

 

在函數前的註釋:

 

/**

* open_port – Open a serial port

*

* @param port : The port number, eg, open_port(1) will open com1

*

* @return Return fd if success, otherwise will return -1 with some msg.

*/

定義宏使用的註釋:

/**

* @def error_exit

* @brief A macro that prints the @a error msg and exit.

*/

#define error_exit(error)

do{

fprintf(stderr, “%sn”, error);

exit(0);

while(0)

 

 

或者你會說,這樣的註釋風格太麻煩了!不怕!現在有了跟emacs結合的doxymacs,在emacs中配置了doxymacs,這些註釋是十分方便的!比如需要在文件前插入註釋,按C-c d i即可,在函數前插入註釋,按C-c d f即可,等等。具體的請移步到這裏的文章:http://www.latelee.org/embedded-linux/learning-elinux-4-my-emacs-iihttp://www.latelee.org/embedded-linux/learning-elinux-4-my-emacs如果你使用的不是emacs,那Sorry,我也不太會,如果你懂,不妨分享一下。

這個串口程序的文檔已經放到網站上了,這裏main.c文件參考頁面地址:http://www.latelee.org/yetanothertest/serialport-html-cn/main_8c.html

此外,我們還測試生成中文文檔,因此doxygen使用UTF8,因此只要將代碼文件保存爲utf8編碼即可(使用Ultra Edit或notepad++等等編輯器很容易做到)。但這又引出一個問題,gcc並不支持utf8!經過google,發現gcc 4.4.0版本以後已經支持utf8了,因此,爲了做這個測試,花了一個小時左右編譯、安裝高版本的gcc(我們使用4.4.5版本),結果,這個版本的gcc是支持utf8的。後來,又發現,如果使用“UTF-8 無BOM格式編碼”格式保存源文件的話,在原來的gcc下也編譯通過。因此如果想在程序中使用中文註釋,建議以此格式保存,當然,在系統的locale不是中文的情況下看到的中文是亂碼的。

1、盡信書則不如無書,我們建議各位到實踐中試一試,這樣學到的知識才是我們自己的,比如,在指定源代碼目錄中,我的測試文件main.c放在當前目錄下,如果不指定“.”的話,doxygen便不會處理該文件,這是網上很多資料沒有說明的,因此需要實踐才能瞭解。

2、我們強烈建議各位到官方網站學習,因爲其它地方絕大部分都出自官方網站,manual頁面地址是:

http://www.stack.nl/~dimitri/doxygen/manual.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章