📄

Linux環境でDoxygenの出力形式にCHMフォーマットを使う方法

2023/12/07に公開

API仕様などを Doxygen で生成している皆様、それを配布する際にどんなフォーマットを使っていますか?
LaTeX などを使ってPDFを生成するのも良いですが、Doxygen のフォーマットと親和性が高いもう一つの出力形式にCHM形式があります。

https://ja.wikipedia.org/wiki/Microsoft_Compiled_HTML_Help

これはHTML形式を単純に一つのファイルに纏めたような形式で、昔の Windows でヘルプファイルの形式として使われていたものです。

Doxygen では、この形式がサポートされているのですが、少し問題があります。
Doxygen はCHMの生成に HTML Help Workshop という、Microsoft のツールに含まれているHTML Help Compiler (hhc.exe) というプログラムを利用するのですが、このツールはもう Microsoft は配布していないようなのです。

https://learn.microsoft.com/ja-jp/previous-versions/windows/desktop/htmlhelp/microsoft-html-help-downloads

しかし、捨てる神あれば拾う神あり、オープンソース版の実装として chmcmd というものがあることがわかりましたので、それを使って Linux 環境で Doxygen の出力形式として CHM を使う場合の設定について共有します。

https://wiki.freepascal.org/htmlhelp_compiler

chmcmd の入手

chmcmd は Free Pascal の開発補助ツールとして配布されているので、Ubuntu の場合、fp-utils というパッケージに含まれています。これをインストールしましょう。

https://www.freepascal.org/

https://launchpad.net/ubuntu/jammy/+package/fp-utils

sudo apto install fp-utils

通常 /usr/bin/chmcmd としてインストールされます。

Doxygen の設定

Doxyfile に以下の設定をしてください。

Doxyfile
GENERATE_HTMLHELP      = YES
CHM_FILE               = Document.chm
HHC_LOCATION           = /usr/bin/chmcmd

これで、 html/Document.chm が生成されます。

補足的な設定

FAQ的な内容ですが、以下の設定をしておかないと目次に日本語がある場合に文字化けします。
本文がUTF-8でも、目次はCP932にしていないと文字化けするところが古いWindowsらしいですね。

Doxyfile
OUTPUT_LANGUAGE        = Japanese
CHM_INDEX_ENCODING     = CP932

動作確認した環境

  • Ubuntu 22.04 LTS

Discussion