我想写一个Doxygen注释来命名发生注释的文件。我没有明确地写出文件名,而是希望Doxygen能够为我提供它。因此,如果我更改文件的名称,或将某些内容移动到不同的文件中,我不需要更改名称的硬编码实例。
对于一个具体的例子,假设我正在为array.hpp中的函数添加注释,我希望某些函数的注释说“此函数只能在array.hpp中使用”。我希望能够写
/**
* This function should only be used within @thisfile.
*/
其中@thisfile
是一个Doxygen表达式,转换为array.hpp
文件中的array.hpp
。
我查看了Doxygen文档,包括“自动链接生成/链接到文件”和整个“特殊命令”部分,但我还没找到我正在寻找的内容。这样的功能是否存在?
请注意,几周前在Doxygen邮件列表上提出的问题基本相同。它没有收到任何回复。
答案 0 :(得分:1)
据我所知,这种功能并不是现成的。但您可以通过在Doxyfile
中配置INPUT_FILTER
来添加它。该文件的路径通过doxygen作为参数传递给过滤器。过滤器可以使用此选项将您的关键字(例如@thisfile
)替换为文件的路径。
下面我举例说明如何使用bash
实现此功能。其他shell或Windows的解决方案应该非常相似。
bash
写一个简短的bash
脚本infiltrate_filename.sh
:
#!/bin/bash
pathToScript=`pwd`"/"
sed -e "s:@thisfile:${1/$pathToScript/}:g" $1
此脚本截断工作目录的文件路径。结果字符串用于替换您选择的关键字(此处:@thisfile
)。
chmod +x infiltrate_filename.sh
Doxyfile
中的INPUT_FILTER
设置为INPUT_FILTER = ./infiltrate_filename.sh
那就是它!现在,您可以在documentation blocks中使用@thisfile
,它将被文件路径替换。由于路径与Doxygen的工作目录相关,因此它们会automatically be linked到文件中。
此解决方案假定过滤器脚本位于doxygen的工作目录中(例如~/my_project
),并且INPUT
文件位于工作目录的子目录中(例如~/my_project/src/foo/bar
})。
我在最小的工作示例中测试了这个例子。我不是bash
或sed
专家。这个解决方案可能是可以改进的。