您可以通过使用INPUT_FILTER 选项指定过滤器脚本/程序来预处理源文件。然后,通过设置FILTER_SOURCE_FILE = YES,过滤后的源代码将在源浏览器中使用,而不是在原始源中使用。
来自文档:
INPUT_FILTER 标记可用于指定 doxygen 应调用的程序来过滤每个输入文件。 Doxygen 将通过执行(通过 popen())命令来调用过滤程序:
<filter> <input-file>
其中是 INPUT_FILTER 标记的值,并且是输入文件的名称。然后 Doxygen 将使用过滤器程序写入标准输出的输出。
和
如果 FILTER_SOURCE_FILES 标签设置为 YES,输入过滤器(如果使用 INPUT_FILTER 设置)也将用于过滤用于生成要浏览的源文件的输入文件(即当 SOURCE_BROWSER 设置为 YES 时)。
作为一个粗略的例子,使用以下源(保存为 filter.py 与 Doxyfile 相同的位置,并使其可执行):
#!/usr/bin/env python
import fileinput, re
# output all lines that does not start with // (but allow //!)
for line in fileinput.input():
if not re.match(r'\s*//(?![!])', line):
print line,
在 Doxyfile 中,设置:
INPUT_FILTER = ./filter.py
FILTER_SOURCE_FILE = YES
输出源浏览器现在将只显示不以// 开头的行。
当然,创建一个过滤器脚本来丢弃所有 C 风格的 cmets,除了那些与 doxygen 相关的内容,这将比上面显示的要复杂得多。