Seaside Laboratory

Post

Doxygen と Graphviz を使う

久しぶりに Doxygen でドキュメントでも生成してみようかと思ったら、使い方を忘れてしまっていたので、備忘録として手順を書いておく。

まず、下記コマンドを実行してスケルトンとなる設定ファイルを生成。

doxygen -g

カレントディレクトリに Doxyfile という名前でファイルが出力される。

出来上がったら設定ファイルをエディタで開いてカスタマイズを行う。変更が必要そうな主な設定は以下の通り。

項目名 意味 設定例
PROJECT_NAME プロジェクト名 "Knuckle Fighter Maniax"
OUTPUT_DIRECTORY ドキュメントの出力先 "C:\My Program\doxygen"
OUTPUT_LANGUAGE 出力言語 Japanese
FULL_PATH_NAMES 出力ファイル名をフルパスにする NO
OPTIMIZE_OUTPUT_FOR_C C 言語に最適化 YES
EXTRACT_ALL 全てを展開 YES
INPUT ソースファイルのパス "C:\My Program"
INPUT_ENCODING ソースファイルの文字コード SHIFT_JIS
FILE_PATTERNS 対象とするファイル *.cpp *.h
RECURSIVE サブディレクトリーも含める YES
VERBATIM_HEADERS ドキュメントにヘッダを引用 NO
GENERATE_TREEVIEW ツリービューの利用 YES
ENUM_VALUES_PER_LINE 列挙型を行に並べる数 1
GENERATE_LATEX LATEX 版の出力 NO

修正が終わったら、設定ファイル名をオプションに付加した以下のコマンドを実行する。

doxygen Doxyfile

出力先にディレクトリが自動で作成されるので、その中にある index.html を開く。

今回最大の目的はヘッダファイルの依存関係を可視化することなので、Graphviz という別のグラフツールを使って依存関係を図として出力する。これを行うには、Graphviz のインストールと Doxyfile への設定追加が必要になる。

項目名 意味 設定例
HAVE_DOT dot ツールの有無 YES
DOT_NUM_THREADS グラフ生成時のスレッド数 4
UML_LOOK 継承図を UML 風にする YES
CALL_GRAPH 呼び出し依存関係図の生成 YES
CALLER_GRAPH 呼び出し元依存関係図の生成 YES
DOT_PATH dot ツールの位置 "C:\Program Files\Graphviz 2.28\bin"

設定が終わったら Doxygen を再実行する。


ヘッダファイルの依存関係。見づらいのであれば MAX_DOT_GRAPH_DEPTH を調整すべし。

コンパイラは不必要なヘッダ呼び出しをしても注意をしてくれないので、ドキュメントツールを使って最適化するのがヨサゲ。