DoxygenをDockerで。

やりたいこと

Doxygen環境をDockerで構築したいです。

環境

ソフトバージョン
Windows1123H2
WSL2(Ubuntu)20.04 LTS
docker desktop 4.31.1 (153621)
nakatt/doxygen1.8.20

手順

作業は全てWSL2上で実施しました。

# Dockerイメージをプルします
docker pull nakatt/doxygen

# Doxygenドキュメントを生成したいソースコードがあるフォルダに移動します
cd path/to/src

# Doxygenの設定ファイル Doxyfile を生成します。
docker run -it --rm -v $PWD:/data nakatt/doxygen -g Doxyfile

# Doxyfileを編集します。(私の例を後述します)
sudo vi Doxyfile 

# Doxygenドキュメントを生成します。
docker run -it --rm -v $PWD:/data nakatt/doxygen

この手順で実行した配下にhtmlフォルダが生成されています。index.htmlを開いて中身を確認して問題なければOKです。

期待したコードがドキュメント化されていない、画像が生成されていない等あればDoxyfileの設定を見直してください。

Doxyfileの変更例

$ diff Doxyfile Doxyfile.mod
485c485
< EXTRACT_ALL            = NO
---
> EXTRACT_ALL            = YES
926c926
< RECURSIVE              = NO
---
> RECURSIVE              = YES
1567c1567
< HTML_FORMULA_FORMAT    = png
---
> HTML_FORMULA_FORMAT    = svg
2301c2301
< HAVE_DOT               = NO
---
> HAVE_DOT               = YES
2418c2418
< CALL_GRAPH             = NO
---
> CALL_GRAPH             = YES
2430c2430
< CALLER_GRAPH           = NO
---
> CALLER_GRAPH           = YES
2461c2461
< DOT_IMAGE_FORMAT       = png
---
> DOT_IMAGE_FORMAT       = svg

以上です。


調べた事のメモ

PNG生成エラー。

# dotコマンドでPNGを作成する際にエラーが発生しました。
/data # dot -Tpng ./sample.dot -o ./sample.png
Format: "png" not recognized. Use one of: canon cmap cmapx cmapx_np dot dot_json eps fig gv imap imap_np ismap json json0 mp pic plain plain-ext pov ps ps2 svg svgz tk vml vmlz xdot xdot1.2 xdot1.4 xdot_json

# 問題を確認してみるとライブラリがロードできないとエラーになっていますがファイル自体は存在していました。
# (...シンボリックリンクだとダメ?)
/data # dot -c
Warning: Could not load "/usr/lib/graphviz/libgvplugin_pango.so.6" - file not found
Warning: Could not load "/usr/lib/graphviz/libgvplugin_pango.so.6" - file not found

少し調べてみましたが解消方法がわからなかったので、png ではなく svg形式で出力するようにして問題を解消させました。

error: Doxyfile not found and no input file specified!

GitBashで実行しようとしたところ掲題のエラーが出てドキュメント生成が出来ませんでした。 何か設定の問題かとは思いますがWSLでは生成できるのでWSLで実行するようにしました。

タイトルとURLをコピーしました