Doxygen:如何链接到带注释的源代码?

问题描述 投票:6回答:2

我的库有一个非常简单的Main.cpp文件示例,我有一个教程页面。该页面看起来像这样:

/**
 *  @page simpleexample Simple Example
 *
 *  This example shows basic use. It is in \ref simple_example/Main.cpp.
 *
 *  And this is the description of the example.
 */

现在它做的是它通过指向该文件文档的链接替换simple_example/Main.cpp引用。我希望它直接转到带注释的源代码。

有没有办法在不完全禁用每个文件的情况下执行此操作?我想拥有它,但我不喜欢人们需要点击Main.cpp链接,然后再点击内部的Go to the source code of this file.链接。我不太关心文件部分中的链接如何表现,尽管我宁愿让它们转到文件文档,就像默认情况下那样。

我不想使用\example在教程页面中包含源代码,因为它已经存在于单独解释的小部分中。

c++ doxygen
2个回答
2
投票

我在我的旧代码中发现我曾经使用main.c_source来引用带注释的源代码(而不是文档!),但现在测试它不起作用...

我给你的最佳解决方案是黑客攻击。使用HTML引用带注释的源的实际.html文件。

<A HREF=main_8c_source.html><B> main.c annotated source </B></A>

根据我的观察,Doxygen遵循标准的重命名方案。 “。”一致地更改为“_8”,并附加“_source”以引用源代码。资本一直变为小写,并以下划线开头。 MyFile.c成为_my_file_8c

你还必须设置CREATE_SUBDIRS = NO。如果CREATE_SUBDIRS = YES那么你无法确定该文件将在哪个子目录中。

当然作为一个黑客,你永远不能确定它是否会在下一个版本中运行。如果它仍然有效,你将不得不进行双重检查。也许建议它作为功能请求...


2
投票

您可以采用不同的方法,并使用\include\snippet自动引用教程中的示例代码,而不是将读取器重定向到任何位置。

我同意\ref的两步效果有点过分,但即使只需要一步就可以看一下与教程文本分开的代码,也会打破读者的注意力。

根据“示例”中的代码量,您可以使用\include将其全部插入到doxygen输出中,也可以使用\snippet在教程页面中引用关键部分。后者的优势在于您可以在教程文本中穿插部分。

这两者都有混合的祝福,包含的样本被视为代码。这意味着目标文件中的doxygen注释将显示为代码而不是doxygen。这似乎是不合需要的,但它有助于明确哪个是教程文本,哪个是示例文件。 (也就是说,我自己只使用过snippet来引用教程页面中的实际代码示例。)

相关的Doxygen手册部分here

我注意到你不想使用\example。我的方法略有不同(特别是使用\snippet),并没有创建“示例”页面。这可能仍然不是你想要的,但我在这里提供它,以防它对其他人有用。

© www.soinside.com 2019 - 2024. All rights reserved.