代码之家  ›  专栏  ›  技术社区  ›  Terrence Brannon

当变量定义有尾随空格时如何防止GNU Make执行

  •  1
  • Terrence Brannon  · 技术社区  · 14 年前

    我的makefile中有一个简单的变量定义:

    THIS         := ~/edan 
    

    它的行中有尾随空格。

    后来,当我用这个变量定义另一个变量时:

    WARES       := $(THIS)/wares
    

    实际定义的变量是 /home/directory/edan wares

    make clean 规则已删除 /home/directory/edan 而不是我想要的。

    如果行有尾随空格,如何防止生成文件执行?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Dan Moulding    14 年前

    尽管您可以编写Makefile,以便它检查变量是否有尾随空格,如果找到一些,则退出,但有更好的方法来处理这种情况。

    在这种情况下,我建议使用 addsuffix 连锁功能 $(THIS) /wares 而不是手动操作。这个 函数将为您除去尾随空格。换句话说:

    WARES := $(addsuffix /wares,$(THIS))
    

    真正地 如果发现尾随空白,希望它退出,可以执行以下操作:

    THIS := ~/edan
    ifneq "$(THIS)" "$(strip $(THIS))"
        $(error Found trailing whitespace)
    endif