Doxygen无法运行html帮助编译器,从父文件夹以“开始”开头的文件夹运行时出现hhc.exe错误HHC5010&引用;

Doxygen无法运行html帮助编译器,从父文件夹以“开始”开头的文件夹运行时出现hhc.exe错误HHC5010&引用;,doxygen,chm,conan,Doxygen,Chm,Conan,我正在Windows上使用Conan软件包管理器创建软件包。创建包的conan命令将文件复制到%USERPROFILE%\.conan(或C:\Users\xxxxxxx\.conan)中的文件夹中。然后从这个位置构建一个VisualStudio项目,并最终调用doxygen.exe,以在生成后命令中创建一个.chm帮助文件。doxygen命令失败,原因是: 错误:无法在index.hhp上运行html帮助编译器 进一步调查显示,doxygen执行的hhc.exe命令失败,原因如下: C:\Us

我正在Windows上使用Conan软件包管理器创建软件包。创建包的conan命令将文件复制到
%USERPROFILE%\.conan
(或
C:\Users\xxxxxxx\.conan
)中的文件夹中。然后从这个位置构建一个VisualStudio项目,并最终调用
doxygen.exe
,以在生成后命令中创建一个.chm帮助文件。doxygen命令失败,原因是:

错误:无法在index.hhp上运行html帮助编译器

进一步调查显示,doxygen执行的hhc.exe命令失败,原因如下:

C:\Users\xxxxxxx\.conan\data\Module\1.0.0\user\channel\build\524dc97e4a3dd1f774ea3897f9e4faf26c5457d2\Documentation>"C:/Program Files (x86)/HTML Help Workshop/hhc.exe" html\index.hhp
HHC5010:错误:无法打开“C:\Users\xxxxxxx\data\Module\1.0.0\user\channel\build\524dc97e4a3dd1f774ea3897f9e4faf26c5457d2\Documentation\html\Module.chm”。编译已停止

仔细检查发现错误消息中缺少“.conan”文件夹。果然,我确认当index.hpp位于父文件夹以“.”开头的文件夹中时,hhc.exe会失败

试图解决此问题:

  • 将Doxyfile设置OUTPUT\u目录更改为“$(TMP)/DoxygenModule”可以解决此错误,但会在另一个位置创建.chm文件,我不喜欢这样
  • 导航到“.conan”文件夹的8DOT3名称(即“conan~1”)以运行hhc.exe命令成功,但不幸的是,我无法让conan使用此8DOT3路径创建包。例如,
    C:\Users\xxxxxxx\CONAN~1\…
我可以使用%TMP%文件夹,但更希望在当前文件夹中生成.chm。有人有什么想法吗

HTML Help Workshop v1.31安装在我的计算机上的
C:\Program Files(x86)\HTML Help Workshop
,可能来自Visual Studio安装(不确定)。我也尝试使用从微软网站(v1.30)下载的版本,但没有什么不同


其他信息:柯南1.18.0版、Doxygen 1.8.14版、Windows 10 1809版不幸不是解决方案,但这是hhc.exe中的已知限制,请参阅:

HTML Help 1.x命令行编译器hhc.exe无法将CHM文件编译到其完整路径包含以点开头的文件夹名的文件夹中。如果您有这个问题,您可能指定了以点开头的文件夹的输出路径,例如“d:\My files.NET\documentation”。可以在文件夹名称中使用点,但不能在开头使用点

编辑2019-11-15: 我刚刚向github推出了一个建议的补丁(pull request 7402,)。 这个建议的补丁将doxygen内部的当前目录更改为短名称的当前目录,但仅用于HTML帮助编译

编辑2019-11-16
代码已集成到github的主版本中。

这也不是答案。事实上,你自己找到了答案和解决办法

使用OUTPUT_DIRECTORY指定不包含以句点开头的文件夹名称的目录

您描述的错误是MS HTML帮助编译器的已知问题。一般来说,HTML帮助编译器不喜欢某些文件夹和文件名。尝试并坚持使用这些字符,a..z,a..z,0..9。不要使用这些符号,尤其是
-

请注意,专有CHM文件格式大约有20年历史(Windows 95,…)。HTML帮助处于维护模式,这意味着运行时或编译器都不需要新功能和错误修复。HH上的所有主流开发都已停止

如果上面的目录名以句点开头,则无法避免此错误。即使只有必要的文件是由Doxygen编写的,
index.hhp
的编译也是由第三方工具(如FAR HTML)使用包含
.conan
的路径完成的。这是因为所有应用程序都使用有故障的
HHA.dll

上述内容当然适用于您描述的整个工作流。也许你可以打断一下

  • 可以将Doxygen配置为不调用HTMLHelp编译器。只需取消选中
    GENERATE\u HTMLHELP
    选项(DoxyWizard:Experts>Topics>HTML)。您的首选输出目录中有由Doxygen生成的所有文件,但当然没有CHM文件。这可以稍后导入,例如由HelpNDoc导入,并在另一个位置编译为CHM文件

  • 如果您可以中断工作流,也可以更改Doxygen的设置,则输出目录的首选项设置(例如,
    C:/CacheMenu/CONAN~1/DOXYGE~1
    也可以按预期工作(此处用作测试用例)


无论您做什么,您的变通方法以及从外部的另一个目录复制和粘贴都是此阶段的快速解决方案。请注意@albert答案中的编辑。

使用doxygen 1.8.16测试它有多容易?刚刚测试过自己1.8.16显示了相同的问题,我也尝试直接在html目录上运行hhc命令(只是hhc index.hhp)相同的问题。将完整路径添加到hhp文件中的索引*项,同样的问题。看起来像是htmlhelp编译器中的错误,或者存在doxygen未使用的设置。另请参阅我的编辑和我的答案(以获得更好的解决方案)。@albert-太棒了!无论如何,这是解决问题的正确方法。HHA.dll不太可能在将来改变Microsoft。