Doxygen 中的动态超 link 参考

Dynamic hyper link reference in Doxygen

Doxygen 是否可以构建诸如 link 之类的引用只在某处定义一次并且对它的任何引用都会得到相应的重定向? 这将允许 \see 命令指向正确的资源,而不需要在代码中的任何地方复制 URL,同时如果需要的话可以很容易地更改所说的 link。

生成的文档看起来有点像这样:

mainpage.md

Useful links are defined here

A guide to something
Datasheet of something

source.c 文件参考

(...)
See also
A guide to something //points to URL defined in mainfile.md

[编辑] 感谢评论中的@albert,我已经设法使用 \snippetdoc 做到了这一点,但是 block-id 之后的任何文本都会使 doxygen 无法呈现代码段。

工作示例:
知道我的 link 是在 docs/mainpage.dox 文件中这样定义的:

[url_to_link1]
<a href="linkToSomething">Link description</a>
[url_to_link1]

[url_to_link2]
<a href="linkToSomething">Link description</a>
[url_to_link2]

这个有效:

/**
* \file
* \section links "Useful Links"
* - \snippetdoc docs/mainpage.dox url_to_link1
* - \snippetdoc docs/mainpage.dox url_to_link2
*/

这不是:

/**
* \file
* \brief     Some function definition
* \see       API reference on specific subject (more info: \snippetdoc docs/mainpage.dox url_to_link1)
*/

Doxygen 版本为 1.8.14

如问题和评论中所述,此问题的解决方案在于命令 \snippetdoc,另一种方法是定义 ALIAS(在 Doxyfile doxygen 配置文件中)供参考,并在需要的地方使用定义的命令/别名。

如 OP 所示,通过 \snippetdoc 可能的解决方案是:

/**
* \file
* \section links "Useful Links"
* - \snippetdoc docs/mainpage.dox url_to_link1
* - \snippetdoc docs/mainpage.dox url_to_link2
*/

以下版本无法按照 OP 指示运行:

/**
* \file
* \brief     Some function definition
* \see       API reference on specific subject (more info: \snippetdoc docs/mainpage.dox url_to_link1)
*/

问题是 \snippetdoc 的定义是 \snippetdoc <file-name> ( block_id ) 其中 (block_id) 意味着它读取到行尾(参见 doxygen 文档),因此结束 )block_id 的一部分,无法解析。

可能更好的实现方式是 <block_id>,这样 block_id 就是一个单词。这样做的问题是它可能会破坏现有文档,例如block_id.

中使用空格或点

这个问题有多种解决方案:

1) 将结束 ) 定义为 block_id 的一部分(在非工作版本中):

[url_to_link1)]
<a href="linkToSomething">Link description</a>)
[url_to_link1)]

2) 将结尾 ) 放在下一行(定义可以保留在问题中):

/**
* \file
* \brief     Some function definition
* \see       API reference on specific subject (more info: \snippetdoc docs/mainpage.dox url_to_link1
*            )
*/

3)定义2个定义:

[url_to_link1)]
<a href="linkToSomething">Link description</a>)
[url_to_link1)]
[url_to_link1]
<a href="linkToSomething">Link description</a>
[url_to_link1]

我一般的解决方案2)作为解决方案的首选方案。 block_id 之后的所有文本都必须在下一行。