【问题标题】:How to synthesize line breaks in GNU Make warnings or errors?如何在 GNU Make 警告或错误中合成换行符?
【发布时间】:2013-06-12 00:07:53
【问题描述】:

使用 built-in $(error text) and $(warning text) functions of GNU Make 时,如何在不使用杂技的情况下在错误/警告输出中换行?

我所说的杂技是指这两种有趣的方法:

$(warning $(shell /bin/echo -e "something\nfoo\nbar\nbaz"))
$(warning $(shell /bin/bash -c 'echo  -e "something\nfoo\nbar\nbaz"'))

顺便说一句,这对我在 Ubuntu 10.04 上的 GNU Make 3.81 不起作用。

基本原理:我想让我的GNUmakefile 的条件部分(ifeqifneq)中的错误输出更具可读性。


我目前的解决方法是为每一行使用:

$(warning ...)

最后是最后一行:

$(error ...)

【问题讨论】:

    标签: makefile gnu-make


    【解决方案1】:

    使用define/endef定义一个换行变量并将其用作$n,如下所示:

    define n
    
    
    endef
    
    $(warning "something$nfoo$nbar$nbaz")
    

    注意define和endef之间的两个空行

    【讨论】:

    • 两者都有效,大概是因为它是一个字符?!谢谢,这正是我想要的。
    • 不客气。如果它是 nl 而不是 n,它必须是 $(nl) 或 ${nl} 才能避免被视为 ${n}l。单字母变量名在 Gnu make 中不会遇到这个问题。
    • 根据响应,我发现我可以创建一个变量,即您要显示的消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2014-04-03
    相关资源
    最近更新 更多