doxygen使用心得

来源:互联网 发布:c语言解惑pdf百度网盘 编辑:程序博客网 时间:2024/06/06 04:59

其它的内置功能,需要详细看选项啦

生成中文的问题,注意两点:


1 修改
      Expert -> Input   选项卡中的 INPUT_ENCODING 为 GB2312 (或者GBK)
      修改为 UTF-8 时, 所有的中文注释都会是乱码

2 修改
      Expert -> Project 选项卡中的 OUTPUT_LANGUAGE 为 Chinese,会导致chm左边栏为乱码字符,右边栏中的固定标题是中文
      修改为 English,则是正常的英文标题。
----------------------------------------------------------------------
3 全默认情况下即:
                 Project 选项卡下,DOXYFILE_ENCODING = UTF-8
                 Input   选项卡下,INPUT_ENCODING    = UTF-8

输出英文内容正常,中文注释乱码,修改:
                                   DOXYFILE_ENCODING = GB2312
                                   INPUT_ENCODING    = GB2312

则报错如下:
         error: unsupported character conversion: 'GB2312 '->'UTF-8'
         *** Doxygen has finished

删除掉生成的html文件夹也同样报错,重新改为:
                                   DOXYFILE_ENCODING = GBK
                                   INPUT_ENCODING    = GBK
则报错如下:
         error: unsupported character conversion: 'GBK '->'UTF-8'
         *** Doxygen has finished
继续修改如下:
                                   DOXYFILE_ENCODING = GBK
                                   INPUT_ENCODING    = UTF-8
报错如下:
         error: unsupported character conversion: 'GBK '->'UTF-8'
         *** Doxygen has finished

继续修改如下:
                                   DOXYFILE_ENCODING = UTF-8
                                   INPUT_ENCODING    = GBK
则会进入正常生成,只是chm左边栏为乱码

最后修改如下:
                                   OUTPUT_LANGUAGE   = English
                                   DOXYFILE_ENCODING = UTF-8
                                   INPUT_ENCODING    = GBK
则生成的chm左边栏为英文,右边栏中的固定标题为英文,中文注释部分仍为中文,是比较满意的一个了。

生成合乎要求的中文则需要设置如下
                                   OUTPUT_LANGUAGE   = Chinese
                                   DOXYFILE_ENCODING = UTF-8
                                   INPUT_ENCODING    = GBK

得到一个左边栏乱码,但是右边栏中文标题和中文注释内容正常的chm,再使用 iconv 修正。

实际上操作,则是通过 doxywizard 配置好其它选项和上面的选项后关闭生成Doxyfile文件,调用写好的06rebuild.bat处理

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                                                《删除html文件夹》
<<<<----------------------------------------------------------
cd ./html
for /f %%a in ('dir /a:d /b') do rmdir /s /q %%a
del /s /q /f *.*
>>>>----------------------------------------------------------
这三句会删除html文件夹所在的父文件夹下所有的文件和子文件夹,包含html,空留一个父文件夹在哪里


<<<<----------------------------------------------------------
cd %cd%/html
for /f %%a in ('dir /a:d /b') do rmdir /s /q %%a
del /s /q /f *.*
>>>>----------------------------------------------------------
这三句会删除html文件夹所在的父文件夹,父文件夹消失了


<<<<----------------------------------------------------------
cd E:/H3/wzx/H3Simulator/src/CipherTest/DecryptionManager/Doc/html
for /f %%a in ('dir /a:d /b') do rmdir /s /q %%a
del /s /q /f *.*
>>>>----------------------------------------------------------
这三句会删除html文件夹内所有东西,空留一个html文件夹


<<<<----------------------------------------------------------
cd "%~dp0"html
for /f %%a in ('dir /a:d /b') do rmdir /s /q %%a
del /s /q /f *.*
----------------------------------------------------------
这三句会删除html文件夹内所有东西,空留一个html文件夹
%~dp0:为了防止路径中有空格,一般加上"",无论在不在根目录下最后都有/


<<<<----------------------------------------------------------
:: rd /s /q  "%~dp0"html 解释
:: "%~dp0"--为了防止路径中有空格,一般加上"",无论在不在根目录下最后都有/。
:: /S 除目录本身外,还将删除指定目录下的所有文件。用于删除目录树。
:: /Q 安静模式,带 /S 删除目录树时不要求确认。
::rd /s /q  "%~dp0"html
>>>>----------------------------------------------------------
似乎改变了权限,再次执行 "doxygen Doxyfile",不能创建html文件夹

 

<<<<----------------------------------------------------------
echo ================================================
echo 》》          清空以前输出                  《《
echo ================================================

if exist refman.chm del /f /q refman.chm
if exist output/html del /f /q output/html/*.*
if exist output/latex del /f /q output/latex/*.*
if exist output/rtf del /f /q output/rtf/*.*
if exist output del /f /q output/*.*
>>>>----------------------------------------------------------
将上面的 output 替换成 %cd%,运行结果导致整个当前文件夹内部东西删除,只生下个空壳
复制备份的文件到空壳中,又一切正常


*************************************************************************************
只保留“复件 doxygenfile”文件夹而把“doxygenfile”文件夹移到最外面src里面。
点击“复件 doxygenfile”中的“06rebuild.bat”,仍然会生成与“复件 doxygenfile”同级的
“doxygenfile”文件夹,这个doxygenfile文件夹只包含html,显示是在“复件 doxygenfile”
里面的批处理导致生成的,也就是说,因为Doxyfile里面的设置,导致了另外文件夹的必然生成。

要生成一个Doc里面包含的chm,需要修改 Doxyfile 里面的"doxygenfile"为“Doc”
而不是上面一直讨论的权限啊,删除啊之类的问题。


*************************************************************************************
使用指定时间作为生成文件的一部分

set FileName=%date:~0,10%_%time:~0,2%.%time:~3,2%
@if  exist index.chm copy index.chm  ../"%FileName%"-refman-"%RANDOM%".chm
@del /f /q *.chm

*************************************************************************************
Doxyfile4CHMExe--0.bat
用于其它项目时,发现
                                  @if not exist    %cd%/html   goto  A
不起作用,而对当前目录进行全删除

修改两点:
   1 所有的 %cd% 加上双引号,避免一些空格什么的路径造成的问题
   2 所有的目录后面都加上/.
结果如下:
                                 @if not exist    "%cd%"/html/.   goto  A
   3 修改最后三个跳转标号为AA/BB/CC,防止与前面的三个标号A/B/C发生混淆

*************************************************************************************

实例:


::@echo off
::call 01clean.bat
::call 02build.bat
::call 05makechm.bat
::call 06cleanmid.bat
::pause


@echo ================================================
@echo 》》                生成准备                《《
@echo 》》 1 必需安装软件:                       《《
@echo 》》       graphviz-2.26.3.msi              《《
@echo 》》       htmlhelp.exe 4.71                《《
@echo 》》       doxygen-1.7.1-setup.exe          《《
@echo 》》   复制到 windows/system32的文件:      《《
@echo 》》       fr.exe                           《《
@echo 》》       iconv.exe                        《《
@echo 》》       cygiconv-2.dll                   《《
@echo 》》       cygintl-2.dll                    《《
@echo 》》       cygwin1.dll                      《《
@echo 》》 2 当前目录必需Doxyfile文件且设置:     《《
@echo 》》       OUTPUT_LANGUAGE   = Chinese      《《
@echo 》》       DOXYFILE_ENCODING = UTF-8        《《
@echo 》》       INPUT_ENCODING    = GBK          《《
@echo 》》 可使用Doxywizard程序设置doxyfile文件   《《
@echo 》》 3 本程序必须与doxyfile在同一目录下面   《《
@echo ================================================
@pause
:: 授予当前目录完全操作权限
::@cacls "%cd%" /e /c /g everyone:F

@echo 首先判断是否存在Doxyfile文件
@pause
@if not exist  "Doxyfile"    echo " !!! NO Doxyfile, Exit !!! "
@if not exist  "Doxyfile"    pause
@if not exist  "Doxyfile"    echo " !!! 没有配置文件Doxyfile,将退出 !!! "
@if not exist  "Doxyfile"    pause
@if not exist  "Doxyfile"    exit
@echo 存在Doxyfile文件,进入流程处理

:: call  01clean.bat
@echo off
@echo ================================================
@echo 》》          1 清空以前输出               《《
@echo ================================================
@pause
@if exist     output/html/     del /f /q    output/html/*.*
@if exist     output/latex/    del /f /q    output/latex/*.*
@if exist     output/rtf/      del /f /q    output/rtf/*.*
@if exist     output          del /f /q    output/*.*

::@echo 1
::@pause
::if   exist     "%cd%"/html/.       del /f /q    %cd%/html/*.*
::@cacls  "%cd%"     /e /c /g everyone:F
@if not exist    "%cd%"/html/.   goto  A

::@echo 2
::@pause

@echo  更改"%cd%"/html目录为目标目录
@cd     /d       "%cd%"/html/.
@echo  正在删除html文件夹下的所有文件,请稍等......
@echo  清除非目录文件
@del    /s /q    *.*
@echo  清除html所有目录及其所有子目录和文件
@for /F %%i in ('dir /b') do rmdir /s /q %%i
@echo  清除html文件夹
@cd     ..
@rd     /s /q   "%~dp0"html
@echo  清除完成!


:A
::@echo 3
::@pause

::if   exist     "%cd%"/latex/.      del /f /q    %cd%/latex/*.*
::@cacls  "%cd%"      /e /c /g everyone:F
@if not exist     "%cd%"/latex/.   goto  B

::@echo 4
::@pause

@echo  更改"%cd%"/latex目录为目标目录
@cd     /d       "%cd%"/latex/.
@echo  正在删除latex文件夹下的所有文件,请稍等......
@echo  清除非目录文件
@del    /s /q    *.*
@echo  清除latex所有目录及其所有子目录和文件
@for /F %%i in ('dir /b') do rmdir /s /q %%i
@echo  清除latex文件夹
@cd     ..
@rd     /s /q     "%~dp0"latex
@echo  清除完成!


:B
::@echo 5
::@pause

::if   exist     "%cd%"/rtf/.        del /f /q    %cd%/rtf/*.*
::@cacls  "%cd%"      /e /c /g everyone:F
@if not exist     "%cd%"/rtf/.   goto  C

::@echo 6
::@pause

@echo  更改"%cd%"/rtf目录为目标目录
@cd     /d       "%cd%"/rtf/.
@echo  正在删除rtf文件夹下的所有文件,请稍等......
@echo  清除非目录文件
@del    /s /q    *.*
@@echo  清除rtf所有目录及其所有子目录和文件
@for /F %%i in ('dir /b') do rmdir /s /q %%i
@echo  清除rtf文件夹
@cd     ..
@rd     /s /q     "%~dp0"rtf
@echo  清除完成!

:C
::@echo 7
::@pause

::@cacls  "%cd%"      /e /c /g everyone:F
@if exist     "%cd%"/*.hhc     del /f /q    "%cd%"/*.hhc
@if exist     "%cd%"/*.hhp     del /f /q    "%cd%"/*.hhp
@if exist     "%cd%"/*.hhk     del /f /q    "%cd%"/*.hhk
@if exist     "%cd%"/*.tmp     del /f /q    "%cd%"/*.tmp
@if exist     *refman*.chm     del /f /q    *refman*.chm

 


:: call  02build.bat
@echo off
@echo ================================================
@echo 》》           2 生成中间文档              《《
@echo ================================================
@pause
doxygen Doxyfile

 


:: call  05makechm.bat
@echo off
@echo ================================================
@echo 》》 3 将Doxygen输出文件编码从utf-8转到gbk 《《
@echo ================================================
@pause

:: ================================================
:: #系统指定可执行文件的搜索路径: %PATH%
:: #局部返回当前目录字符串:       %CD%"
:: ================================================

@set path=%path%;%cd%;

:: ================================================
:: 原“cd output/html”找不到路径,故"%cd%/html"
:: ================================================
@cd   "%cd%"/html/.

@echo ================================================
@echo 》》         3.1 处理chm输入文件           《《
@echo ================================================

:: call 03utf82gbk.bat index.hhp
@echo off
@echo ================================================
@echo 》》3.1.1将index.hhp从utf-8编码转到gbk编码 《《
@echo ================================================
@for %%f in (index.hhp) do copy %%f %%f.utf8
@for %%f in (index.hhp) do iconv -c -f utf-8 -t gbk %%f.utf8 > %%f

 


:: call 03utf82gbk.bat index.hhc
@echo off
@echo ================================================
@echo 》》3.1.2将index.hhc从utf-8编码转到gbk编码 《《
@echo ================================================
@for %%f in (index.hhc) do copy %%f %%f.utf8
@for %%f in (index.hhc) do iconv -c -f utf-8 -t gbk %%f.utf8 > %%f

 


:: call 03utf82gbk.bat index.hhk
@echo off
@echo ================================================
@echo 》》3.1.3 将index.hhk从utf-8编码转到gbk编码《《
@echo ================================================
@for %%f in (index.hhk) do copy %%f %%f.utf8
@for %%f in (index.hhk) do iconv -c -f utf-8 -t gbk %%f.utf8 > %%f

 


::call 04html-utf82gbk *.html
@echo off
::call 03utf82gbk *.html
@echo off
@echo ================================================
@echo 》》3.1.4将*.html从utf-8编码转换到gbk编码  《《
@echo ================================================
@for %%f in (*.html) do copy %%f %%f.utf8
@for %%f in (*.html) do iconv -c -f utf-8 -t gbk %%f.utf8 > %%f

@echo ================================================
@echo 》》3.1.5将*.html的charset从UTF-8改为gb2312《《
@echo ================================================
fr *.html -fic:charset=UTF-8 -t:charset=gb2312

@echo ================================================
@echo 》》          3.2生成chm文件               《《
@echo ================================================
@"C:/Program Files/HTML Help Workshop/hhc.exe" index.hhp
::@if  exist index.chm copy index.chm  ../refman"%RANDOM%".chm

set FileName=%date:~0,10%_%time:~0,2%.%time:~3,2%
@if  exist index.chm copy index.chm  ../"%FileName%"refman"%RANDOM%".chm
@del /f /q *.chm

:: “../”表示当前文件夹上一级文件夹
:: DOS只能用反斜杠分割"/","/"表示加参数哦
:: @pause
:: @echo %CD%  发现当前目录在 ../DecryptionManagerDoc/Doc/html
:: @cd ../../ 
:: @echo %CD%   发现当前目录在 ../DecryptionManagerDoc/
:: @pause
@echo 退回html上一级目录
@cd   /d  ../

::call 06cleanmid.bat
@echo off
@echo ================================================
@echo 》》        4 清空中间输出                 《《
@echo ================================================
@pause
@if exist     output/html     del /f /q    output/html/*.*
@if exist     output/latex    del /f /q    output/latex/*.*
@if exist     output/rtf      del /f /q    output/rtf/*.*
@if exist     output          del /f /q    output/*.*

:: rd删除文件好像会修改文件权限哦,这里前后两次设置相同权限
::@cacls  "%cd%"   /e /c /g everyone:F


::if exist     "%cd%"/html/.       del /f /q    %cd%/html/*.*
::if exist     "%cd%"/html/.       rd  /s /q     "%~dp0"html
::@cacls  "%cd%"     /e /c /g everyone:F
@if not exist    "%cd%"/html/.   goto  AA
@echo  更改"%cd%"/html目录为目标目录
@cd     /d       "%cd%"/html/
@echo  正在删除html文件夹下的所有文件,请稍等......
@echo  清除非目录文件
@del    /s /q    *.*
@echo  清除html所有目录及其所有子目录和文件
@for /F %%i in ('dir /b') do rmdir /s /q %%i
@echo  清除html文件夹
@cd     ..
@rd     /s /q   "%~dp0"html
@echo  清除完成!


:AA
::if exist     "%cd%"/latex/.      del /f /q    %cd%/latex/*.*
::if exist     "%cd%"/latex/.      rd  /s /q     "%~dp0"latex
::@cacls  "%cd%"      /e /c /g everyone:F
@if not exist     "%cd%"/latex/.   goto  BB
@echo  更改"%cd%"/latex目录为目标目录
@cd     /d       "%cd%"/latex/.
@echo  正在删除latex文件夹下的所有文件,请稍等......
@echo  清除非目录文件
@del    /s /q    *.*
@echo  清除latex所有目录及其所有子目录和文件
@for /F %%i in ('dir /b') do rmdir /s /q %%i
@echo  清除latex文件夹
@cd     ..
@rd     /s /q     "%~dp0"latex
@echo  清除完成!


:BB
::@if exist     "%cd%"/rtf/.        del /f /q    %cd%/rtf/*.*
::@if exist     "%cd%"/rtf/.        rd  /s /q    "%~dp0"rtf
::@cacls  "%cd%"      /e /c /g everyone:F
@if not exist     "%cd%"/rtf/.   goto  CC
@echo  更改"%cd%"/rtf目录为目标目录
@cd     /d       "%cd%"/rtf/.
@echo  正在删除rtf文件夹下的所有文件,请稍等......
@echo  清除非目录文件
@del    /s /q    *.*
@@echo  清除rtf所有目录及其所有子目录和文件
@for /F %%i in ('dir /b') do rmdir /s /q %%i
@echo  清除rtf文件夹
@cd     ..
@rd     /s /q     "%~dp0"rtf
@echo  清除完成!

:CC
::@cacls  "%cd%"      /e /c /g everyone:F
@if exist     "%cd%"/*.hhc      del /f /q    "%cd%"/*.hhc
@if exist     "%cd%"/*.hhp      del /f /q    "%cd%"/*.hhp
@if exist     "%cd%"/*.hhk      del /f /q    "%cd%"/*.hhk
@if exist     "%cd%"/*.tmp      del /f /q    "%cd%"/*.tmp
::@cacls  "%cd%"   /e /c /g everyone:F

@pause