Linux環境でDoxygenの出力形式にCHMフォーマットを使う方法
API仕様などを Doxygen で生成している皆様、それを配布する際にどんなフォーマットを使っていますか?
LaTeX などを使ってPDFを生成するのも良いですが、Doxygen のフォーマットと親和性が高いもう一つの出力形式にCHM形式があります。
これはHTML形式を単純に一つのファイルに纏めたような形式で、昔の Windows でヘルプファイルの形式として使われていたものです。
Doxygen では、この形式がサポートされているのですが、少し問題があります。
Doxygen はCHMの生成に HTML Help Workshop という、Microsoft のツールに含まれているHTML Help Compiler (hhc.exe) というプログラムを利用するのですが、このツールはもう Microsoft は配布していないようなのです。
しかし、捨てる神あれば拾う神あり、オープンソース版の実装として chmcmd というものがあることがわかりましたので、それを使って Linux 環境で Doxygen の出力形式として CHM を使う場合の設定について共有します。
chmcmd の入手
chmcmd は Free Pascal の開発補助ツールとして配布されているので、Ubuntu の場合、fp-utils というパッケージに含まれています。これをインストールしましょう。
sudo apto install fp-utils
通常 /usr/bin/chmcmd としてインストールされます。
Doxygen の設定
Doxyfile に以下の設定をしてください。
GENERATE_HTMLHELP = YES
CHM_FILE = Document.chm
HHC_LOCATION = /usr/bin/chmcmd
これで、 html/Document.chm が生成されます。
補足的な設定
FAQ的な内容ですが、以下の設定をしておかないと目次に日本語がある場合に文字化けします。
本文がUTF-8でも、目次はCP932にしていないと文字化けするところが古いWindowsらしいですね。
OUTPUT_LANGUAGE = Japanese
CHM_INDEX_ENCODING = CP932
動作確認した環境
- Ubuntu 22.04 LTS
Discussion