C++ 如何使用Doxygen和HTML帮助编译器生成CHM?

C++ 如何使用Doxygen和HTML帮助编译器生成CHM?,c++,doxygen,chm,doxygen-wizard,html-help-workshop,C++,Doxygen,Chm,Doxygen Wizard,Html Help Workshop,短篇小说:我可以用Doxygen生成CHM文件。启动CHM文件时,我注意到Contents和Index选项卡确实列出了页面、名称空间、类以及这些类的成员。但是,单击这些内容和索引列表中的项目不会显示任何内容 我在一台使用Windows 7 Professional SP1的64位计算机上 我使用Doxywizard在我的代码上运行Doxygen版本1.8.9.1。它正确地生成HTML输出;页面、名称空间、类和成员显示在文档中 然后,我想进一步将HTML转换为压缩HTML(CHM)文件 我从Mic

短篇小说:我可以用Doxygen生成CHM文件。启动CHM文件时,我注意到Contents和Index选项卡确实列出了页面、名称空间、类以及这些类的成员。但是,单击这些内容和索引列表中的项目不会显示任何内容

我在一台使用Windows 7 Professional SP1的64位计算机上

我使用Doxywizard在我的代码上运行Doxygen版本1.8.9.1。它正确地生成HTML输出;页面、名称空间、类和成员显示在文档中

然后,我想进一步将HTML转换为压缩HTML(CHM)文件

我从Microsoft网站()下载了Microsoft HTML帮助研讨会1.31版(即
htmlhelp.exe
4.74.8703版)。我运行了安装程序。安装程序继续运行时,出现一条弹出消息:

此计算机已具有较新版本的HTML帮助

但是,安装已成功完成。而且,
hhc.exe
程序就在我让它安装的地方

我现在指定这些相关的氧气设置:

  • 向导-->输出:
    • 检查HTML
    • 选择“准备压缩HTML(.chm)”选项
  • 专家-->HTML:
    • 生成\u HTMLHELP=YES
    • CHM_FILE=Foo.CHM
    • HHC\u LOCATION=C:\Program Files(x86)\Microsoft\HTML帮助研讨会\HHC.exe
当我再次运行Doxygen时,它会报告一个错误:

error: failed to run html help compiler on index.hhp
Foo.chm
文件在预期的位置生成。但是,如上所述,它缺少很多内容

我尝试在Doxygen生成的HHP文件上手动运行
hhc.exe
。它不表示有任何错误

C:\Program Files (x86)\Microsoft\HTML Help Workshop>hhc c:\test\html\index.hhp
Microsoft HTML Help Compiler 4.74.8702

Compiling c:\test\html\Foo.chm

Compile time: 0 minutes, 3 seconds
292     Topics
3,855   Local links
83      Internet links
0       Graphics

Created c:\test\html\Foo.chm, 259,580 bytes
Compression decreased file by 1,077,915 bytes.
但是,结果是一样的:一个缺少内容的
Foo.chm
文件

后来我发现我的计算机上安装了另一个HTML帮助研讨会。但是,
hhc.exe
是完全相同的版本。因此,这不太可能是问题所在


您能建议我可以尝试在CHM文件中显示所有文档内容的其他方法吗?

在您的DOXY文件中,将
hhc.exe的路径用双引号引起来,因为它包含空格


或者更好的是,不要使用带空格的路径。

当我看到这个问题时(html存在,chm有内容,但内容不可见),这是因为windows安全已“阻止”chm文件。要查看这是否是您遇到的问题,请尝试以下操作:

  • 在windows资源管理器中,右键单击生成的.chm文件并选择“属性”
  • 在“常规”选项卡上,如果看到“取消阻止”按钮,请单击该按钮
  • 关闭对话框并打开.chm文件
    (我在本地生成的doxygen.chm文件中没有遇到此问题,但从您的描述中,我希望这可以解决您的问题。)

    基本问题是chm文件位于映射的网络驱动器上

    当我将CHM文件复制到计算机上的物理驱动器时,所有内容都会显示。

    我没有看到要单击的“阻止”按钮。但是,这让我想到了正确的方向。我简化了上面的问题描述,说生成的
    Foo.chm
    文件位于
    c:
    驱动器上。但是,它实际上位于映射的网络驱动器上。当我将CHM文件复制到计算机上的物理驱动器时,所有内容都会显示出来。问题解决了。谢谢