2010年曾經使用Doxygen生成全中文的chm文檔。由于Doxygen生成的chm目錄文件(index.hhc)本身是使用UTF-8編碼的,而古老的chm編譯器(HTML Help Workshop)對于CHM控制文件(index.hhc、index.hhk、index.hhp),卻只支持ANSI編碼(即本地編碼,如中文系統為GBK),所以最終編譯出來的chm文件,左邊的目錄導航欄全是亂碼。為了解決這個問題,可費了一番工夫,得先使用編碼轉換工具轉換后再用chm編譯器編譯(見:使用doxygen為C/C++程序生成中文文檔)。
今天重新拿起Doxygen,驚喜地發現,它已經支持生成ANSI編碼的chm目錄文件(index.hhc)了,所以能省好多工夫,現在終于可以一步搞定。現在想來,Doxygen早就應該支持這個功能的,做起來也很簡單——當然我沒有詳細去翻查Doxygen是從哪個版本開始支持的,反正Doxygen 1.8.0是支持的,想必之后的版本都支持。
下載和安裝 Doxygen
到 Doxygen 官網 下載最新的Doxygen安裝程序,然后安裝。這個軟件包包括了一個GUI界面的前端工具,可以幫助我們方便創建Doxygen配置文件和生成目標文檔。
下面以 Doxygen 1.8.0 為例進行講解。
下載和安裝 chm 編譯器
我們使用微軟古老的 HTML Help Workshop 1.3,這個軟件N久沒更新了。
下載地址: 微軟官網
下載后根據提示安裝。
項目一般設置
首先在“Wizard”標簽的Project項進行如下設置:
-
項目名稱:將在最新的文檔首頁中顯示
-
源碼列表:選擇要生成文檔的源代碼或目錄,可以有多個文件或目錄形成一個列表。建議使用相對路徑,相對于當前目錄(也即當前配置文件所在的目錄)
-
遞歸掃描:如果需要對整個源碼目錄下的所有子目錄及文件生成文檔,請勾選本項
-
輸出目錄:設置最終生成的幫助文檔的存儲路徑,建議使用相對路徑
下一步,Mode項,根據需要設置文檔生成模式。
下一步,Output項,設置輸出格式,勾選HTML和“prepare for compressed HTML(.chm)”
然后切換到“Expert”標簽的“HTML”項,設置HTML和CHM相關的選項:
-
GENERATE_HTMLHELP:確保已經勾選了
-
CHM_FILE:最終生成的.chm的文件名,如“HkcProjectHelp.chm”。默認為“index.chm”。可以使用路徑,也可以使用相對路徑,相對于上面設置的輸出目錄的html目錄(建設使用上一級目錄,如“..\MyDoc.chm”)
-
HHC_LOCATION:chm 編譯器(hhc.exe)的全路徑。請指到
HTML Help Workshop 的安裝目錄的 hhc.exe 程序
-
CHM_INDEX_ENCODING:chm索引文件編碼,下面會講到,這里填“GBK”
編碼設置
編碼設置很重要,如果設置不當,生成的文檔會出現亂碼。因為 Doxygen 汲及的東西多,有好幾項編碼設置,所以需要認真對待,根據項目的實情情況設置。
所有高級設置(包括編碼設置)都在“Expert”標簽,重要的設置項如下:
-
Project/DOXYFILE_ENCODING:當前 Doxygen 配置文件本身的字符編碼,默認為UTF-8,一般不需要修改
-
Project/OUTPUT_LANGUAGE:輸出語言。這里是指Doxygen自己生成的導航、提示、幫助等文本的文字采用的語言。我們希望幫助文檔是全中文的,所以選擇Chinese
-
Input/INPUT_ENCODING:輸入文件的編碼。這里是指我們的源代碼文件本身的編碼。在Windows平臺一般是系統編碼(GBK),而Linux平臺一般是UTF-8。請用文本編輯器查看源文件的編碼。這里如果設置的不一致,源碼文件的注釋中所有非ASCII字符將在生成的文檔中變成亂碼。
-
HTMP/CHM_INDEX_ENCODING:這里設置Doxygen生成的CHM索引文件的編碼,以前是不能設置的,默認為UTF-8,而微軟的編譯器不能識別UTF-8編碼的索引文件,所以最終造成左邊目錄導航欄亂碼。我們設置它為GBK,這樣Doxygen將為我們生成GBK編碼的索引文件(.hhc、.hhk、.hhp)
生成CHM文檔
設置好了后,點擊“Run”→“Run doxygen”生成最終的.chm文檔,如果設置正確,打開后是全中文的了。