我正在尝试使用doxygen生成一个类似于makefile的不支持格式的文档 . 我的行看起来像这样:
001: $(SOME_DYNAMIC_TARGET): some_function
002:
003:///Documentation for Doxygen
004:///
005:///
006:fixed_target: $(REDIRECTION_TO_OTHER_TARGET)
我只关心fixed_target而不是动态的,所以我尝试使用sed one-liners作为INPUT_FILTER,以便将我的代码更改为类似C的结构 . 在使用 doxygen -d Preprocessor
转储预处理器后,我希望看到这个:
001:
002:
003:///Documentation for Doxygen
004:///
005:///
006:fixed_target= $(REDIRECTION_TO_OTHER_TARGET);
我的INPUT_FILTER看起来像这样
INPUT_FILTER = "sed 's/\(.*\):\(.*\)/\1=\2;/; s/^\$/#/'"
这应该切换 :
为 =
,在我的目标行的末尾添加一个分号,并用 #
替换第一行开头的 $
,这将使doxygen的预处理器忽略该行 . 但是, s/^\$/#/
部分无法正常工作,因为它会继续替换它在每一行中找到的第一个 $
符号,即使它不在开头,所以我最终会改为:
001:
002:
003:///Documentation for Doxygen
004:///
005:///
006:fixed_target= #(REDIRECTION_TO_OTHER_TARGET);
我仍然得到了文档,但是006行中不需要的 #
是一个副作用,当我的代码变得更复杂时我想避免这种副作用 . 我的过滤器有问题吗?
1 回答
你的sed应该是(假设 Headers 行
001:
不在文件中但仅供参考)所以从外部appli传递到子shell,你当然需要逃避一些char