如何从 makefile 变量中删除尾随空格?

如何从 makefile 变量中删除尾随空格?

Makefile 不需要用引号绑定变量值。

例如,这将被接受:

a := ls -l -a > out.txt

我的问题是:如果我想做这样的事情:

a := ls -l -a > out
b := .txt
c := $(a)$(b)

如果变量 $(a)​​ 的行尾有一个空格,则变量 $(c) 将如下所示:

ls -l -a > out .txt 

后面有空格out

这可能会导致错误。

有没有办法全局忽略所有 makefile 变量值行尾的空格?

答案1

不,没有办法改变 make 解析变量定义的方式。如果您无法更改变量的定义点,则必须更改它们的使用点。

如果您使用 GNU make 并且变量值内部不应该有明显的空格,您可以使用strip功能

c := $(strip $(a))$(strip $(b))

答案2

空格不在行尾——空格位于 .txt 之前。

这工作正常:

a:= ls -l -a >out
b:=.txt
c:=$(a)$(b)

all:
    @echo ${c}

您也可以使用所有类型的文本处理函数......但是使事情依赖于“一定数量(或没有)的空白”通常是“不好的”

答案3

之后您还有空间out。我遇到了同样的问题,删除变量末尾的空格a

相关内容