來自:http://www.stack.nl/~dimitri/doxygen/starting.html
The executable
doxygen
is the main program that parses the sources and generates the documentation. See section
Doxygen usage for more detailed usage information.
[可執行的 doxygen 是一種源文件轉換及文檔生成工具,具體使用信息請參見
Doxygen用法 ]
The executable doxytag
is only needed if you want to generate references to external documentation (i.e. documentation that was generated by doxygen) for which you do not have the sources. See section Doxytag usage for more detailed usage information.
[可執行的 doxytag 是一種外部文檔索引生成工具,當然所謂外部文檔也是應由 doxygen 生成的,doxytag 特別適合于所基于的外部文檔不包含源程序時的情況。具體查看 Doxytag 用法 ]
Optionally, the executable doxywizard
can be used, which is a graphical front-end for editing the configuration file that is used by doxygen and for running doxygen in a graphical environment. For Mac OS X doxywizard will be started by clicking on the Doxygen application icon.
[另外,可執行的 doxywizard 是一種前端圖形工具,用于配置文件的編輯。如果在 Mac 中使用 doxywizard 可以直接點擊 Doxygen 應用程序圖標。]
The following figure shows the relation between the tools and the flow of information between them (it looks complex but that's only because it tries to be complete):
[下圖說明了工具和信息流向的關系,雖然看起來有些復雜,但其實很簡單,當然復雜也是因為 Doxygen 期望能夠提供更完善的功能。]

Doxygen information flow
Doxygen uses a configuration file to determine all of its settings. Each project should get its own configuration file. A project can consist of a single source file, but can also be an entire source tree that is recursively scanned.
[Doxygen 使用配置文件來決定使用中所有的設置。每個項目應該擁有自己的配置文件。這里所說的項目可以包含一個文件的項目,當然更適合的是包括整個源文件樹中所有文件的項目。]
To simplify the creation of a configuration file, doxygen can create a template configuration file for you. To do this call doxygen
from the command line with the -g
option:
[為了簡化配置文件的創建, doxygen 提供了配置模板,使用如下命令即可:]
where <config-file> is the name of the configuration file. If you omit the file name, a file named Doxyfile
will be created. If a file with the name <config-file> already exists, doxygen will rename it to <config-file>.bak before generating the configuration template. If you use -
(i.e. the minus sign) as the file name then doxygen will try to read the configuration file from standard input (stdin
), which can be useful for scripting.
[其中 <config-file> 是配置文件的名稱。如果忽略該項,默認的文件名將被創建,即 Doxyfile。如果指定的 <config-file> 已經存在,doxygen 將重命名原來的文件為 <config-file>.bak,之后再生成新的配置模板。如果我們使用 -(減號)作為文件名,doxygen 將嘗試從標準輸入(stdin)讀取配置信息,這種方式特別適合于自寫腳本。]
The configuration file has a format that is similar to that of a (simple) Makefile. It consists of a number of assignments (tags) of the form:
[配置文件的格式類似于簡單的 Makefile,它包含一些具有賦值格式的標簽,如下:]
TAGNAME = VALUE
or
TAGNAME = VALUE1 VALUE2 ...
You can probably leave the values of most tags in a generated template configuration file to their default value. See section Configuration for more details about the configuration file.
[我們可以保留大部分標簽的默認值,參見具體配置說明。]
If you do not wish to edit the config file with a text editor, you should have a look at doxywizard, which is a GUI front-end that can create, read and write doxygen configuration files, and allows setting configuration options by entering them via dialogs.
[如果我們不希望以文本形式編輯配置文件,我們可以使用 doxywizard,它是一個 doxygen 的前端 gui,用以創建、讀取、編輯 doxygen 配置文件,可以通過對話框選擇配置選項。]
For a small project consisting of a few C and/or C++ source and header files, you can leave INPUT tag empty and doxygen will search for sources in the current directory.
[對于只包含幾個C或C++源文件及頭文件的小項目來說,我們可以使 INPUT 標簽留空,這樣 doxygen 將在當前文件夾中搜尋所有的源文件。]
If you have a larger project consisting of a source directory or tree you should assign the root directory or directories to the INPUT tag, and add one or more file patterns to the FILE_PATTERNS tag (for instance *.cpp *.h
). Only files that match one of the patterns will be parsed (if the patterns are omitted a list of source extensions is used). For recursive parsing of a source tree you must set the RECURSIVE tag to YES
. To further fine-tune the list of files that is parsed the EXCLUDE and EXCLUDE_PATTERNS tags can be used. To omit all test
directories from a source tree for instance, one could use:
[如果處理包含一個源文件目錄的大項目,我們應該令 INPUT 標簽等于源文件根目錄和相應的目錄,并添加文件類型
標簽 FILE_PATTERNS (如 *.cpp、*.h)。只有匹配文件類型的文件才會被處理,如果該標簽忽略不指明,則“源文件
擴展列表”將被采用。如果希望迭代處理源代碼樹,你必須設置 RECURSIVE 為 YES。如果希望更精確地控制文件
類型列表,還可以使用 EXCLUDE 和 EXCLUDE_PATTERNS 。如下面列子,如果需要忽略掉 test 目錄下的所有文件,
可以這樣處理:]
EXCLUDE_PATTERNS = */test/*
Doxygen looks at the file's extension to determine how to parse a file. If a file has an .idl
or .odl
extension it is treated as an IDL file. If it has a .java
extension it is treated as a file written in Java. Files ending with .cs
are treated as C# files and the .py
extension selects the Python parser. Finally, files with the extensions .php
, .php4
,.inc
or .phtml
are treated as PHP sources. Any other extension is parsed as if it is a C/C++ file, where files that end with .m
are treated as Objective-C source files.
[Doxygen 是通過文件的擴展名來決定如何處理文件的。如果某個文件擴展名為 .idl 或 .odl,那么這個文件即被認為
是 IDL 文件。如果某個具有 .java 擴展名,那么即被認為是由 Java 語言寫成的文件。同樣,.cs 是 C# 文件,.py 文件
作為 Python 來處理;.php、.php4、.inc 或 .phtml 被認為是 PHP 源文件。其他的就被認為是 C/C++文件處理,其中
以 .m 結尾的被認為是 Object-C 文件處理。]
If you start using doxygen for an existing project (thus without any documentation that doxygen is aware of), you can still get an idea of what the structure is and how the documented result would look like. To do so, you must set the EXTRACT_ALL tag in the configuration file to YES
. Then, doxygen will pretend everything in your sources is documented. Please note that as a consequence warnings about undocumented members will not be generated as long as EXTRACT_ALL is set to YES
.
[如果你使用 doxygen 對現有項目進行處理(也就是說目前 doxygen 對要處理的項目還一無所知),我們可以先規劃出未來成品的結構如何,或者是明確到底以什么樣子呈現。為實現該目的,我們必須設置 EXTRACT_ALL 標簽為 YES。這樣,doxygen 將記錄源文件中所有內容。請注意:使用了該標簽后,未記錄的成員或文件內容將不會得到任何提示或警告。]
To analyse an existing piece of software it is useful to cross-reference a (documented) entity with its definition in the source files. Doxygen will generate such cross-references if you set the SOURCE_BROWSER tag to YES
. It can also include the sources directly into the documentation by setting INLINE_SOURCES to YES
(this can be handy for code reviews for instance).
[另外,使用交叉引用(鏈接源文件定義片斷)在軟件分析中十分有效,Doxygen 將在 SOURCE_BROWSER 為 YES 的情況下自動產生交叉引用。如果設置 INLINE_SOURCES 為 YES,可以使源代碼直接加入到文檔中,這對代碼復審非常有用。]
(自己注:記得將 OUTPUT_LANGUAGE=Chinese
)
To generate the documentation you can now enter: [我們可以直接使用以下命令產生文檔:]
Depending on your settings doxygen will create html
, rtf
, latex
, xml
and/or man
directories inside the output directory. As the names suggest these directories contain the generated documentation in HTML, RTF,
, XML and Unix-Man page format.
[通過不同的設置,doxygen 可以在輸出目錄中生成各種文件夾,如何 html、rtf、latex、xml 或 man等,并分別代表所生成的 HTML、RTF、XML以及
, Unix-Man 格式文檔。]
The default output directory is the directory in which doxygen
is started. The root directory to which the output is written can be changed using the OUTPUT_DIRECTORY. The format specific directory within the output directory can be selected using the HTML_OUTPUT, RTF_OUTPUT, LATEX_OUTPUT, XML_OUTPUT, and MAN_OUTPUT tags of the configuration file. If the output directory does not exist, doxygen
will try to create it for you (but it will nottry to create a whole path recursively, like mkdir -p
does).
[默認的輸出文件夾為當前運行 doxygen 的文件夾,當然可以使用 OUTPUT_DIRECTORY 修改根目錄。另外,根目錄下特定的文件夾可以通過以下標簽設置,即HTML_OUTPUT, RTF_OUTPUT, LATEX_OUTPUT, XML_OUTPUT, 和 MAN_OUTPUT 。如果輸出文件夾不存在,那么 doxygen 將嘗試創建一個新的,但是不會象 mkdir -p 一樣工作。]
The generated HTML documentation can be viewed by pointing a HTML browser to the
index.html
file in the
html
directory. For the best results a browser that supports cascading style sheets (CSS) should be used (I'm using Mozilla, Safari, Konqueror, and sometimes IE6 to test the generated output).
[生成的 HTML 文檔通過 index.html 起始,這些 HTML 文檔采用 CSS。]
Some of the features the HTML section (such as GENERATE_TREEVIEW) require a browser that supports DHTML and Javascript.
[還有一些特性(如 GENERATE_TREEVIEW)需要瀏覽器支持 DHTML 和 Javascript。]
If you plan to use the search engine (see SEARCHENGINE), you should view the HTML output via a PHP-enabled web server (e.g. apache with the PHP module installed).
[如果你計劃使用搜索引擎(見SEARCHENGINE)你應當通過 php web服務器來查看 html 輸出。]
The generated

documentation must first be compiled by a

compiler (I use a recent teTeX distribution). To simplify the process of compiling the generated documentation,
doxygen
writes a
Makefile
into the
latex
directory.
The contents and targets in the Makefile
depend on the setting of USE_PDFLATEX. If it is disabled (set to NO
), then typing make
in the latex
directory a dvi file called refman.dvi
will be generated. This file can then be viewed using xdvi
or converted into a PostScript file refman.ps
by typing make ps
(this requires dvips
).
To put 2 pages on one physical page use make ps_2on1
instead. The resulting PostScript file can be send to a PostScript printer. If you do not have a PostScript printer, you can try to use ghostscript to convert PostScript into something your printer understands.
Conversion to PDF is also possible if you have installed the ghostscript interpreter; just type make pdf
(or make pdf_2on1
).
To get the best results for PDF output you should set the PDF_HYPERLINKS and USE_PDFLATEX tags to YES
. In this case the Makefile
will only contain a target to build refman.pdf
directly.
Doxygen combines the RTF output to a single file called refman.rtf. This file is optimized for importing into the Microsoft Word. Certain information is encoded using field. To show the actual value you need to select all (Edit - select all) and then toggle fields (right click and select the option from the drop down menu).
The XML output consists of a structured "dump" of the information gathered by doxygen. Each compound (class/namespace/file/...) has its own XML file and there is also an index file called index.xml.
A file called combine.xslt XSLT script is also generated and can be used to combine all XML files into a single file.
Doxygen also generates two XML schema files index.xsd (for the index file) and compound.xsd (for the compound files). This schema file describes the possible elements, their attributes and how they are structured, i.e. it the describes the grammar of the XML files and can be used for validation or to steer XSLT scripts.
In the addon/doxmlparser directory you can find a parser library for reading the XML output produced by doxygen in an incremental way (see addon/doxmlparser/include/doxmlintf.h for the interface of the library)
The generated man pages can be viewed using the
man
program. You do need to make sure the man directory is in the man path (see the
MANPATH
environment variable). Note that there are some limitations to the capabilities of the man page format, so some information (like class diagrams, cross references and formulas) will be lost.
Although documenting the sources is presented as step 3, in a new project this should of course be step 1. Here I assume you already have some code and you want doxygen to generate a nice document describing the API and maybe the internals as well.
[雖然標記源文件放在了第三步,但實際上對于一個新項目來說,這應該是第一步。這里我們假設你已經有一些代碼,并想利用 doxygen 來生成漂亮的文檔以描述 API 或內部細節等。]
If the EXTRACT_ALL option is set to NO
in the configuration file (the default), then doxygen will only generate documentation for documented members, files, classes and namespaces. So how do you document these? For members, classes and namespaces there are basically two options:
[如果 EXTRACT_ALL 標簽設置為 NO(默認值),那么 doxygen 只生成已經標記的成員、文件、類及命名空間。所以我們該如何標記它們,這里對成員、類、命名空間給出兩條基本原則:]
- Place a special documentation block in front of the declaration or definition of the member, class or namespace. For file, class and namespace members it is also allowed to place the documention directly after the member. See section Special documentation blocks to learn more about special documentation blocks.
- Place a special documentation block somewhere else (another file or another location) and put a structural command in the documentation block. A structural command links a documentation block to a certain entity that can be documented (e.g. a member, class, namespace or file). See section Documentation at other places to learn more about structural commands.
1、在成員、類、命名空間前放置特別的標記塊。對于一個文件、類、命名空間等,同樣可以直接在成員后面加上標記。詳見
Special documentation blocks。
2、在另一個文件或位置放置特別的標記塊,并在標記塊中置入結構化命令。結構化命令將提供到某個記錄塊或某個位置的鏈接(如鏈接到成員、類、命名空間等。)詳見:
Documentation at other places Files can only be documented using the second option, since there is no way to put a documentation block before a file. Of course, file members (functions, variable, typedefs, defines) do not need an explicit structural command; just putting a special documentation block in front or behind them will do.
[文件只能以上面第二種方式標記,因為我們是沒有方式在一個文件前面置入標記塊的。當然,文件成員(包括函數、變量、類型定義、定義等)不需要明確的結構化命令。只要在它們前面或后面放入特別的標記塊即可。]
The text inside a special documentation block is parsed before it is written to the HTML and/or
output files.
[特別標記塊中的文本將在輸出前被轉換。]
During parsing the following steps take place: [轉換步驟:]
- The special commands inside the documentation are executed. See section Special Commands for an overview of all commands.
- [標記中的特別命令被執行,詳見: Special Commands ]
- If a line starts with some whitespace followed by one or more asterisks (
*
) and then optionally more whitespace, then all whitespace and asterisks are removed. - [如果某行以 whitespace 加上一個或多個星號開始,后面可能還會有更多 whitespace,那么所有的 whitespace 和星號將被刪除]
- All resulting blank lines are treated as a paragraph separators. This saves you from placing new-paragraph commands yourself in order to make the generated documentation readable.
- [所有空行將被認為是段落分隔。這會省去加入段落命令的麻煩。]
- Links are created for words corresponding to documented classes (unless the word is preceded by a %; then the word will not be linked and the % sign is removed).
- [創建標記類的鏈接。如果鏈接文字前標有 %,那么該文字將不會被認為是鏈接,同時刪除 %]
- Links to members are created when certain patterns are found in the text. See section Automatic link generationfor more information on how the automatic link generation works.
- [創建標記成員的鏈接。詳見:Automatic link generation ]
- HTML tags that are in the documentation are interpreted and converted to
equivalents for the
output. See section HTML Commands for an overview of all supported HTML tags. - [文檔中的HTML標簽被轉換。]
Go to the next section or return to the index.