首页 文章

在文件中重复的行的开头处的Doxygen替换元素

提问于
浏览
0

我正在尝试使用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 回答

  • 0

    你的sed应该是(假设 Headers 行 001: 不在文件中但仅供参考)

    sed 's/:/=/;s/^\$/#/;s/$/;/'
    

    所以从外部appli传递到子shell,你当然需要逃避一些char

    INPUT_FILTER = "sed 's/:/=/;s/^\\\$/#/;s/\$/;/'"
    

相关问题