Doxygenの使い方
Doxygenはインストールも簡単だし、使い方も簡単で割とスルスルと使えてしまう、よく出来たソフトウェアだなー。だけど、それでも忘れそうだからメモしておく。
プロジェクトディレクトリのルート(トップレベル)にDoxyfileと置く。doxygenの動作は、Doxyfileで完全に制御される。
$ doxygen --version
1.8.11$ doxygen --help
Doxygen version 1.8.11
Copyright Dimitri van Heesch 1997-2015You can use doxygen in a number of ways:
1) Use doxygen to generate a template configuration file:
C:\Installed\doxygen\bin\doxygen.exe [-s] -g [configName]If - is used for configName doxygen will write to standard output.
2) Use doxygen to update an old configuration file:
C:\Installed\doxygen\bin\doxygen.exe [-s] -u [configName]3) Use doxygen to generate documentation using an existing configuration file:
C:\Installed\doxygen\bin\doxygen.exe [configName]If - is used for configName doxygen will read from standard input.
4) Use doxygen to generate a template file controlling the layout of the
generated documentation:
C:\Installed\doxygen\bin\doxygen.exe -l [layoutFileName.xml]5) Use doxygen to generate a template style sheet file for RTF, HTML or Latex.
RTF: C:\Installed\doxygen\bin\doxygen.exe -w rtf styleSheetFile
HTML: C:\Installed\doxygen\bin\doxygen.exe -w html headerFile footerFi
le styleSheetFile [configFile]
LaTeX: C:\Installed\doxygen\bin\doxygen.exe -w latex headerFile footerF
ile styleSheetFile [configFile]6) Use doxygen to generate a rtf extensions file
RTF: C:\Installed\doxygen\bin\doxygen.exe -e rtf extensionsFileIf -s is specified the comments of the configuration items in the config file wi
ll be omitted.
If configName is omitted `Doxyfile' will be used as a default.-v print version string
$
指示に従い、doxygen -g でDoxyfileを作る。別な名前にするのはやめたほうがいいだろう。
$ cd project-dir$ doxygen -g
Configuration file `Doxyfile' created.
Now edit the configuration file and enter
doxygen Doxyfile
to generate the documentation for your project
$
このあと、doxygen とだけ打つと、それでドキュメントは生成される。Doxyfileをカスタマイズしたが、何をどう書き換えたっけな?
- プロジェクト名(タイトルになる)を設定した。
PROJECT_NAME = "ホゲ ホゲ"
。値に空白が含まないならクォートは要らない。 - 今回は入力がShift_JISである必要があるので、
INPUT_ENCODING = CP932
とした。デフォルトがUTF-8だから、普通は直す必要がない。 - 入力ファイルのglobパターンを
FILE_PATTERNS = *.cpp *.h *.markdown
にした。.mdじゃなくて.markdownにしたのには理由がある(後述)。 - 生成されるHTMLの表示を
GENERATE_TREEVIEW = YES
とした。これは好みが別れるところで、ツリービューはうるさい感じにはなる。 - LaTeX出力は不要なので、
GENERATE_LATEX = NO
とした。 - いくつかのファイルを
EXCLUDE = hoge.h fuga.cpp
で除外した。EXCLUDE_PATTERNS
も使える。 EXTRACT_ALL = YES
とした。こうすると、コメントなしの構成要素もドキュメントされる。警告が出なくなるので良し悪しだが、最初はこうしたほうがいいように思う。
事情があってソースコードのエンコーディングはShift_JIS、拡張子ごとにエンコーディングを変えるとかは出来ないので、Markdownファイルに多少の細工。.md拡張子で原稿を書いて、MakefileでShift_JISに変える。
%.markdown : %.md cat $< | iconv -f UTF-8 -t CP932 > $@
doxygenが読むのは.markdown拡張子のファイル。これで、ソースコードもmarkdown文書ファイルも全てShift_JISで揃う。.markdownファイルは中間一時ファイルの扱い。.mdファイルの先頭のemacs用の<!-- -*- coding: utf-8 -*- -->
は消さない! これを付けておくと、.markdownファイルが文字化けするので、間違って中間ファイルを編集するリスクがなくなる。
.mdをUTF-8のままにしておくのは、pandocなどのツールがUTF-8しか扱えないから。それと、特別な事情がない限りはなるべくUTF-8にしておきたいから。
[追記]
HTMLドキュメントのフロントページに書く内容は、@mainpage(または \mainpage)コマンドを使って書く。どのファイルに書いてもいいが、Readme.doxy.h のようなドキュメント専用のファイルを作ってもいい。
/** @mainpage このプロジェクトについて * * @section first はじめに * * ... * ... */
使えるドキュメント用コマンドはたくさんある。http://www.doxygen.jp/commands.html にリファレンスがある。
[/追記]