如何创建到同一文件的Doxygen链接

时间:2016-07-21 20:17:09

标签: doxygen

我想写一个Doxygen注释来命名发生注释的文件。我没有明确地写出文件名,而是希望Doxygen能够为我提供它。因此,如果我更改文件的名称,或将某些内容移动到不同的文件中,我不需要更改名称的硬编码实例。

对于一个具体的例子,假设我正在为array.hpp中的函数添加注释,我希望某些函数的注释说“此函数只能在array.hpp中使用”。我希望能够写

/**
 *  This function should only be used within @thisfile.
 */

其中@thisfile是一个Doxygen表达式,转换为array.hpp文件中的array.hpp

我查看了Doxygen文档,包括“自动链接生成/链接到文件”和整个“特殊命令”部分,但我还没找到我正在寻找的内容。这样的功能是否存在?

请注意,几周前在Doxygen邮件列表上提出的问题基本相同。它没有收到任何回复。

1 个答案:

答案 0 :(得分:1)

一般

据我所知,这种功能并不是现成的。但您可以通过在Doxyfile中配置INPUT_FILTER来添加它。该文件的路径通过doxygen作为参数传递给过滤器。过滤器可以使用此选项将您的关键字(例如@thisfile)替换为文件的路径。

下面我举例说明如何使用bash实现此功能。其他shell或Windows的解决方案应该非常相似。

bash

的示例
  1. 写一个简短的bash脚本infiltrate_filename.sh

    #!/bin/bash
    pathToScript=`pwd`"/"
    sed -e "s:@thisfile:${1/$pathToScript/}:g" $1
    

    此脚本截断工作目录的文件路径。结果字符串用于替换您选择的关键字(此处:@thisfile)。

  2. 让您的脚本可执行:chmod +x infiltrate_filename.sh
  3. Doxyfile中的INPUT_FILTER设置为INPUT_FILTER = ./infiltrate_filename.sh
  4. 那就是它!现在,您可以在documentation blocks中使用@thisfile,它将被文件路径替换。由于路径与Doxygen的工作目录相关,因此它们会automatically be linked到文件中。

    备注

    此解决方案假定过滤器脚本位于doxygen的工作目录中(例如~/my_project),并且INPUT文件位于工作目录的子目录中(例如~/my_project/src/foo/bar })。

    我在最小的工作示例中测试了这个例子。我不是bashsed专家。这个解决方案可能是可以改进的。