• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            tqsheng

            go.....
            隨筆 - 366, 文章 - 18, 評論 - 101, 引用 - 0
            數據加載中……

            Doxygen + Graphviz + Htmlhelp, 成為文檔好手

            1 doxygen是大名鼎鼎代碼文檔工具。

            下載地址:www.doxygen.org

            安裝它。http://www.stack.nl/~dimitri/doxygen/download.html 可下載.

             

            2 Graphviz

            這個工具配合doxygen使用,可以提取函數,模塊之間的調用關,非常清晰。

            下載地址:http://www.graphviz.org/Download..php 

            下面是Graphviz提取出來的一些關系圖:

                

             
              

             


            3 htmlhelp

            這個工具把doxygen生成的html文件,轉化為一個CHM文件,看起來方便些。

             下載地址:

            http://www.microsoft.com/downloads/details.aspx?FamilyID=00535334-c8a6-452f-9aa0-d597d16580cc&displaylang=en

            安裝它。

             

            全部安裝后就可以開始使用了。

            運行doxygen wizard.exe

                 運行doxywizard.exe,這時按照doxygen根目錄下的文檔(doxygen_manual-1.5.2.chm)中 Doxywizard usage一節的說明設置即可。主要包括,源碼路徑、工作路徑、輸出路徑等。

            點開始,即可生成文檔

             

            最后對文檔生成過程中遇到的一些問題進行說明:

             

            1 中文問題:中文注釋在文檔中是亂碼。
            解決:在expert中的INPUT選項頁的
            INPUT_ENCODEING中填入“GB2312”,這樣基于GB的文本編輯器生成的代碼就可以正常使用了。

             

            2 圖形問題:無法繪制類圖協作圖等圖形。
            首先確保安裝了graphviz,注意不是wingraphviz,后者是一個graphviz的com封裝,但是doxygen并不是基于它開發的,所以裝了也沒用。然后在 expert的Dot頁
            DOT_PATH中填入graphviz的安裝路徑。接著在wizard的diagram中選擇需要生成的圖形類別就可以了。

            如果出現無法包含.map文件的錯誤,可以將工作目錄設置成html,并將html中所有文件都清除再試。這個問題的原因還不太確定。

             

            3 輸出chm的問題:如何輸出.chm文件
            1. 你必須安裝微軟或其相兼容的chm編譯系統。通常為HTML Help Workshop。

            2. 首先在[Wizard]的Output頁面中,選擇HTML,然后選擇到prepare for compressed HTML(.chm)。

            3. 其次在[Expert]的HTML頁面中,將HHC_LOCATION指向微軟的hhc工具。通常為C:/Program Files/HTML Help Workshop/hhc.exe。然后點擊OK,保存,編譯即可。

             

            HHC_LOCATION中輸入hhc.exe文件的路徑。hhc.exe可以通過安裝HTML Help Workshop獲得。

             

            4 如何像MSDN那樣在左邊的樹中顯示函數列表?
            打開[Expert]的HTML頁面,然后選中
            TOC_EXPAND即可。

             

            5 如何去掉CHM附帶的CHI文件?
            注 意在默認情況下,CHM會有一個CHI文件,似乎是用來加速索引的。我本人也遇到過很多用戶僅僅上傳了CHM,而沒有上傳CHI文件,導致無法正常顯示的 情況。我不知道是否可以通過工具重建CHI文件,但是我覺得關閉這個功能即可。打開[Expert]的HTML頁面,取消
            GENERATE_CHI 即可。

             

            6 如何像MSDN那樣右邊每頁顯示一個函數?

            這 個問題其實比較棘手,在[Expert]中的 Project頁面,下面有一個選項叫做SEPARATE_MEMBER_PAGES,把這個選項選中,這樣每個函數就是一個頁。但是會有一個問題,那就 是右邊頁面的旁邊多了所有函數的列表。很遺憾,經過研究,這個確實無法去掉。我的解決方法就是自己編譯一下doxygen,在 memberlist.cpp的writeDocumentationPage函數中將 container->writeQuickMemberLinks(ol,md);連同附近幾行屏蔽掉即可。

             

            7 如何在CHM中去掉當選擇SUBGROUPING后去掉分組的組信息?

            這 個功能就是在chm的左邊樹中直接列出函數列表,而不用點擊看右邊頁面了。這個功能需要修改源代碼。在index.cpp中,屏蔽 writeGroupIndexItem函數的 Doxygen::indexList.addContentsItem,Doxygen::indexList.incContentsDepth和 Doxygen::indexList.decContentsDepth();即可。

             

            8 如何修改或者去掉右下腳Generated at ...的文字?

            打 開[Expert...]的HTML頁面,然后在HTML_FOOTER中指定相應的HTML文件即可。注意HTML_FOOTER中至少包含BODY和 HTML結束標記。即一個最小的尾部HTML至少是這樣</BODY></HTML>。同理,如果你要指定了 HTML_HEADER,他至少包含<HTML><HEAD></HEAD><BODY>

             

            9 如何生成組?

            組 就是可以把同類的函數放到一個根下的顯示方式。doxygen支持grouping,即你可以把相關的代碼通過標志,放到同一個組中,便于查看。這主要是 通過幾個內置語法命令。首先通過@defgroup定義一個組,然后要把分組的函數或者類等,通過標志@ingroup加入相應的組。這樣,相應的函數就 被放置在同一個組中。

             

            10 如何生成中文幫助?

            點擊[Expert],在頁Project 的OUTPUT_LANGUAGE,選擇Chinese,這樣輸出的幫助提示信息就是中文。具體中文提示信息的文字在源代碼中。

             

            11 如何徹底解決DoxyGen的輸出中文chm的亂碼問題?
            DoxyGen的實現中大概有三處編碼的設置。首先是,doxyfile,也就是配置文件。其次,INPUT_ENCODING,也就是DoxyGen需要解析的輸入文件的編碼。最后,就是輸出的編碼。譬如CHM左邊的索引編碼。

            首先是chm的標題亂碼,這個比較好解決,因為DoxyWizard使用QT做的界面,它內部做了轉換,所以在DoxyWizard中輸入中文,在保存的時 候,他自己做了轉碼,導致doxyfile中的最終的保存信息不正確。這個時候只需要用記事本打開doxyfile配置文件,輸入相應中文即可。注意保存 的時候保存成ANSI編碼即可。保存成其他格式的話可能需要去掉BOM,比較麻煩,沒研究了。這個相應的編碼設置在[Expert...]中,頁 Project 的 DOXYFILE_ENCODING,不輸入或者默認為UTF-8都行。

            其次是右邊內容亂碼,這個多半是因為你沒有配置好輸入的文件編碼類型造成的。在[Expert...]的Input頁面中,有一個 INPUT_ENCODING,這個選項表示輸入文件的編碼方式,這要和你處理的源文件格式一致。對于我們來說(使用vs的人),一般設置為 GB2312。當然,再次聲明,編碼方式取決于源文件的編碼方式。如果文件編碼已經是UTF-8了,然而你還將其設置成GB2312,那么DoxyGen 會將UTF-8當成ANSI再進行一次UTF-8轉換,自然會出錯了。

            最后也是經常遇到的問題就是DoxyGen生成的CHM文件的左邊樹目錄的中文變成了亂碼。這個只需要將chm索引的編碼類型修改為GB2312即可。在 HTML的CHM_INDEX_ENCODING中輸入GB2312即可。然而這種方法下,還有一個瑕疵之處,就是chm的搜索頁的搜索結果中顯示的中文 文字卻變成亂碼了。這是因為DoxyGen默認開啟了HTML Help Workshop的Full-text search全文搜索選項,他在進行全文搜索的時候,應該是打開文件然后按照ANSI進行搜索的,(資料表示HHW不支持UTF-8,僅支持ISO- 8859-1或者windows-1252編碼。)而Doxygen生成的右邊界面統一是UTF-8,這自然出現了問題。而在這種情況下做全文搜索,理論 上只能搜索英文。

                    我們的解決方案只能是重新編譯DoxyGen代碼,為了滿足搜索,只要保證右邊的頁面文件不是UTF-8即可。我們首先修改 writeDefaultHeaderFile這個函數的代碼,將其charset=GB2312。然后在 TranslatorDecoder的構造函數中修改m_toUtf8 = (void*)-1;即屏蔽文本寫入時最終的轉換函數。最后刪除INPUT_ENCODING的設置或者輸入UTF-8。這樣會使DoxyGen認為我們 的文本是UTF-8的,從而不用進行轉換。生成替換原始的DoxyGen即可。

            另外需要補充的是,還有一種方案是不用修改作者的源代碼,但是需要將DoxyGen生成的右邊的HTML文件使用工具(如iconv)手工轉換成GB2312,然后再使用HTML Help Workshop生成,網上有篇文章介紹過,我測試一下,也是沒有問題的。

                 

              最后,doxygen是一個開源項目,并且支持vs2005項目,這樣一來,如果你覺得哪里不順手,完全可以把代碼下載后自行編譯。

                    這樣,基本上就能夠用doxygen生成漂亮的文檔了。代碼方面,doxygen支持多種格式的注釋風格,根據manual選擇自己喜歡的就好。

            1 doxygen是大名鼎鼎代碼文檔工具。

            下載地址:www.doxygen.org

            安裝它。http://www.stack.nl/~dimitri/doxygen/download.html 可下載.

             

            2 Graphviz

            這個工具配合doxygen使用,可以提取函數,模塊之間的調用關,非常清晰。

            下載地址:http://www.graphviz.org/Download..php 

            下面是Graphviz提取出來的一些關系圖:

                

             
              

             


            3 htmlhelp

            這個工具把doxygen生成的html文件,轉化為一個CHM文件,看起來方便些。

             下載地址:

            http://www.microsoft.com/downloads/details.aspx?FamilyID=00535334-c8a6-452f-9aa0-d597d16580cc&displaylang=en

            安裝它。

             

            全部安裝后就可以開始使用了。

            運行doxygen wizard.exe

                 運行doxywizard.exe,這時按照doxygen根目錄下的文檔(doxygen_manual-1.5.2.chm)中 Doxywizard usage一節的說明設置即可。主要包括,源碼路徑、工作路徑、輸出路徑等。

            點開始,即可生成文檔

             

            最后對文檔生成過程中遇到的一些問題進行說明:

             

            1 中文問題:中文注釋在文檔中是亂碼。
            解決:在expert中的INPUT選項頁的
            INPUT_ENCODEING中填入“GB2312”,這樣基于GB的文本編輯器生成的代碼就可以正常使用了。

             

            2 圖形問題:無法繪制類圖協作圖等圖形。
            首先確保安裝了graphviz,注意不是wingraphviz,后者是一個graphviz的com封裝,但是doxygen并不是基于它開發的,所以裝了也沒用。然后在 expert的Dot頁
            DOT_PATH中填入graphviz的安裝路徑。接著在wizard的diagram中選擇需要生成的圖形類別就可以了。

            如果出現無法包含.map文件的錯誤,可以將工作目錄設置成html,并將html中所有文件都清除再試。這個問題的原因還不太確定。

             

            3 輸出chm的問題:如何輸出.chm文件
            1. 你必須安裝微軟或其相兼容的chm編譯系統。通常為HTML Help Workshop。

            2. 首先在[Wizard]的Output頁面中,選擇HTML,然后選擇到prepare for compressed HTML(.chm)。

            3. 其次在[Expert]的HTML頁面中,將HHC_LOCATION指向微軟的hhc工具。通常為C:/Program Files/HTML Help Workshop/hhc.exe。然后點擊OK,保存,編譯即可。

             

            HHC_LOCATION中輸入hhc.exe文件的路徑。hhc.exe可以通過安裝HTML Help Workshop獲得。

             

            4 如何像MSDN那樣在左邊的樹中顯示函數列表?
            打開[Expert]的HTML頁面,然后選中
            TOC_EXPAND即可。

             

            5 如何去掉CHM附帶的CHI文件?
            注 意在默認情況下,CHM會有一個CHI文件,似乎是用來加速索引的。我本人也遇到過很多用戶僅僅上傳了CHM,而沒有上傳CHI文件,導致無法正常顯示的 情況。我不知道是否可以通過工具重建CHI文件,但是我覺得關閉這個功能即可。打開[Expert]的HTML頁面,取消
            GENERATE_CHI 即可。

             

            6 如何像MSDN那樣右邊每頁顯示一個函數?

            這 個問題其實比較棘手,在[Expert]中的 Project頁面,下面有一個選項叫做SEPARATE_MEMBER_PAGES,把這個選項選中,這樣每個函數就是一個頁。但是會有一個問題,那就 是右邊頁面的旁邊多了所有函數的列表。很遺憾,經過研究,這個確實無法去掉。我的解決方法就是自己編譯一下doxygen,在 memberlist.cpp的writeDocumentationPage函數中將 container->writeQuickMemberLinks(ol,md);連同附近幾行屏蔽掉即可。

             

            7 如何在CHM中去掉當選擇SUBGROUPING后去掉分組的組信息?

            這 個功能就是在chm的左邊樹中直接列出函數列表,而不用點擊看右邊頁面了。這個功能需要修改源代碼。在index.cpp中,屏蔽 writeGroupIndexItem函數的 Doxygen::indexList.addContentsItem,Doxygen::indexList.incContentsDepth和 Doxygen::indexList.decContentsDepth();即可。

             

            8 如何修改或者去掉右下腳Generated at ...的文字?

            打 開[Expert...]的HTML頁面,然后在HTML_FOOTER中指定相應的HTML文件即可。注意HTML_FOOTER中至少包含BODY和 HTML結束標記。即一個最小的尾部HTML至少是這樣</BODY></HTML>。同理,如果你要指定了 HTML_HEADER,他至少包含<HTML><HEAD></HEAD><BODY>

             

            9 如何生成組?

            組 就是可以把同類的函數放到一個根下的顯示方式。doxygen支持grouping,即你可以把相關的代碼通過標志,放到同一個組中,便于查看。這主要是 通過幾個內置語法命令。首先通過@defgroup定義一個組,然后要把分組的函數或者類等,通過標志@ingroup加入相應的組。這樣,相應的函數就 被放置在同一個組中。

             

            10 如何生成中文幫助?

            點擊[Expert],在頁Project 的OUTPUT_LANGUAGE,選擇Chinese,這樣輸出的幫助提示信息就是中文。具體中文提示信息的文字在源代碼中。

             

            11 如何徹底解決DoxyGen的輸出中文chm的亂碼問題?
            DoxyGen的實現中大概有三處編碼的設置。首先是,doxyfile,也就是配置文件。其次,INPUT_ENCODING,也就是DoxyGen需要解析的輸入文件的編碼。最后,就是輸出的編碼。譬如CHM左邊的索引編碼。

            首先是chm的標題亂碼,這個比較好解決,因為DoxyWizard使用QT做的界面,它內部做了轉換,所以在DoxyWizard中輸入中文,在保存的時 候,他自己做了轉碼,導致doxyfile中的最終的保存信息不正確。這個時候只需要用記事本打開doxyfile配置文件,輸入相應中文即可。注意保存 的時候保存成ANSI編碼即可。保存成其他格式的話可能需要去掉BOM,比較麻煩,沒研究了。這個相應的編碼設置在[Expert...]中,頁 Project 的 DOXYFILE_ENCODING,不輸入或者默認為UTF-8都行。

            其次是右邊內容亂碼,這個多半是因為你沒有配置好輸入的文件編碼類型造成的。在[Expert...]的Input頁面中,有一個 INPUT_ENCODING,這個選項表示輸入文件的編碼方式,這要和你處理的源文件格式一致。對于我們來說(使用vs的人),一般設置為 GB2312。當然,再次聲明,編碼方式取決于源文件的編碼方式。如果文件編碼已經是UTF-8了,然而你還將其設置成GB2312,那么DoxyGen 會將UTF-8當成ANSI再進行一次UTF-8轉換,自然會出錯了。

            最后也是經常遇到的問題就是DoxyGen生成的CHM文件的左邊樹目錄的中文變成了亂碼。這個只需要將chm索引的編碼類型修改為GB2312即可。在 HTML的CHM_INDEX_ENCODING中輸入GB2312即可。然而這種方法下,還有一個瑕疵之處,就是chm的搜索頁的搜索結果中顯示的中文 文字卻變成亂碼了。這是因為DoxyGen默認開啟了HTML Help Workshop的Full-text search全文搜索選項,他在進行全文搜索的時候,應該是打開文件然后按照ANSI進行搜索的,(資料表示HHW不支持UTF-8,僅支持ISO- 8859-1或者windows-1252編碼。)而Doxygen生成的右邊界面統一是UTF-8,這自然出現了問題。而在這種情況下做全文搜索,理論 上只能搜索英文。

                    我們的解決方案只能是重新編譯DoxyGen代碼,為了滿足搜索,只要保證右邊的頁面文件不是UTF-8即可。我們首先修改 writeDefaultHeaderFile這個函數的代碼,將其charset=GB2312。然后在 TranslatorDecoder的構造函數中修改m_toUtf8 = (void*)-1;即屏蔽文本寫入時最終的轉換函數。最后刪除INPUT_ENCODING的設置或者輸入UTF-8。這樣會使DoxyGen認為我們 的文本是UTF-8的,從而不用進行轉換。生成替換原始的DoxyGen即可。

            另外需要補充的是,還有一種方案是不用修改作者的源代碼,但是需要將DoxyGen生成的右邊的HTML文件使用工具(如iconv)手工轉換成GB2312,然后再使用HTML Help Workshop生成,網上有篇文章介紹過,我測試一下,也是沒有問題的。

                 

              最后,doxygen是一個開源項目,并且支持vs2005項目,這樣一來,如果你覺得哪里不順手,完全可以把代碼下載后自行編譯。

                    這樣,基本上就能夠用doxygen生成漂亮的文檔了。代碼方面,doxygen支持多種格式的注釋風格,根據manual選擇自己喜歡的就好。

            posted on 2012-07-15 15:58 tqsheng 閱讀(560) 評論(0)  編輯 收藏 引用

            yy6080久久| 久久久精品国产免大香伊 | 欧美va久久久噜噜噜久久| 99久久精品国产一区二区 | 久久久久国产精品嫩草影院| 久久久久人妻精品一区| 国内精品欧美久久精品| 7777久久久国产精品消防器材| 精品免费tv久久久久久久| 中文字幕无码久久久| 国产精品热久久毛片| 午夜精品久久久久久99热| 欧美国产成人久久精品| 99久久这里只有精品| 99久久国产精品免费一区二区| 国产叼嘿久久精品久久| 久久国产精品一国产精品金尊 | 亚洲级αV无码毛片久久精品| 久久99精品国产麻豆不卡| 久久久婷婷五月亚洲97号色| 无码国内精品久久人妻麻豆按摩| 国产V综合V亚洲欧美久久| 99久久国产宗和精品1上映| 久久se精品一区二区影院| 99麻豆久久久国产精品免费 | 亚洲AV无码一区东京热久久| 久久99亚洲综合精品首页| 久久99国产精品二区不卡| 7777久久亚洲中文字幕| 日韩精品无码久久久久久| 中文字幕日本人妻久久久免费 | 久久午夜福利无码1000合集| 久久久噜噜噜久久| 欧美成a人片免费看久久| 久久97久久97精品免视看秋霞| 国产精品美女久久久久av爽| 99麻豆久久久国产精品免费 | A级毛片无码久久精品免费 | 亚洲精品午夜国产va久久| 亚洲&#228;v永久无码精品天堂久久 | 青青草原综合久久大伊人精品|