使用Doxygen和手动标签文件生成指向外部在线文档的链接

4
我编写了一个库,使用了第三方库。这个第三方库在一个特定网站上提供在线服务。我成功地使用DoxyGen为我的项目生成文档,但是我很难让它生成到第三方在线文档的链接。
我发现我可以在我的文件中为那些类创建“虚拟”条目,并生成包含指向在线文档链接的页面。这种方法的缺点是,我被迫在我的文档中保留仅仅是一个链接的页面。理想情况下,点击第三方类应该直接将用户带到在线文档,而不是让用户浏览一个“无意义但是有链接”的页面。
我尝试使用外部标签文件实现这一点,但运行Doxygen时一直出现错误,而且标记的类仍然没有链接到输出中。我没有找到任何使用手动创建的标签文件来引用在线文档的示例,但根据Doxygen指令的措辞,似乎应该是可行的。
我的当前标签文件看起来像这样(虽然我已经尝试了很多变化):ExternalTags.xml
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<tagfile>
<compound kind="class">
<name>Vector3</name>
<filename>Vector3.html</filename>
</compound>
</tagfile>

我的配置文件中包含以下行(也尝试了许多变化):
TAGFILES               = "externalTags.xml = http://docs.unity3d.com/ScriptReference/"

当从配置中删除标签文件时,Doxygen可以正常运行而不会产生任何错误。如果包含标签文件选项,Doxygen始终会生成以下错误:

lookup cache used 941/65536 hits=6682 misses=1048
finished...
error: Fatal error at line 1 column 1: error while parsing element
error: Fatal error at line 1 column 1: error while parsing prolog

如何解决这些错误,并使链接在doxygen输出中正确生成?

1
找到任何解决方案了吗? - magol
1
我把它搁置了一段时间,但从未弄清楚。 - Glurth
2
@Glurth 我不确定 TAGFILES 配置项中的空格。你最后尝试的是哪个版本的 doxygen(当前版本为1.8.15)?此外,信息有点有限。错误提示了一个不正确的标签文件,但我不确定能否创建一个小项目来指出问题(请注意,使用 doxygen 1.8.15,您可以通过 doxygen -x <your_doxyfile> 来获取标准 Doxyfile 和所使用的 Doxyfile 之间的差异)。 - albert
2个回答

5
最终弄清楚了:看起来我漏掉了标签文件内容的一部分(命名空间部分)。使用以下标签文件内容时,没有出现错误,并且在输出中指定的Unity类型的链接正确显示。此外,请注意文件名字段不包括“.html”扩展名。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<tagfile>
  <compound kind="namespace">
    <name>UnityEngine</name>
    <filename></filename>
    <class kind="class">UnityEngine::PlayerPrefs</class>
    <class kind="class">UnityEngine::Vector3</class>
  </compound>
  <compound kind="class">
    <name>UnityEngine::PlayerPrefs</name>
    <filename>PlayerPrefs</filename>
  </compound>
  <compound kind="class">
    <name>UnityEngine::Vector3</name>
    <filename>Vector3</filename>
  </compound>
</tagfile>

也许与问题无关,但我还没有测试将其改回来,我将标签文件重命名为:unity3d-doxygen-web.tag.xml


我需要.html扩展名。如何防止Doxygen将其修剪?将其添加到<filename>行的末尾不起作用。 - AntumDeluge
似乎在Doxygen v1.9.3中存在一个错误,会修剪.html扩展名。最终我创建了一个Python脚本来解析生成的HTML文件并修复URL。 - AntumDeluge

1

已经过去了一年,但如果其他人遇到这个问题,那么问题来自第一行:

<?xml version="1.0" encoding="UTF-8" standalone="true"?>

应该翻译为:

应该读作:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Doxygen无法将true识别为有效的关键字。

1
唉,这并没有解决我的问题。我仍然得到相同的错误。 - Glurth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接