从传递给用户定义函数的参数中去除前导空格

mar*_*ark 4 makefile gnu-make

如何使用gnu-make从传递给用户定义函数的参数中去除前导空格?

例如:

define FOO
# --- some build rules

# run the built target
/home/user/dir/bin/$(1)

endef
Run Code Online (Sandbox Code Playgroud)

以下调用正常,因为没有前导空格:

$(eval $(call FOO,my_test ) )
Run Code Online (Sandbox Code Playgroud)

不幸的是,以下失败,因为$(1)有一个领先的空间

$(eval $(call FOO, my_test ) )
                  ^
                Additional space to 'prettier' formatting
Run Code Online (Sandbox Code Playgroud)

这最终扩展到:

/home/user/dir/bin/ $(1)
                   ^
                 Leading whitespace
Run Code Online (Sandbox Code Playgroud)

如何从传递给用户定义函数的参数中去除前导空格?

这样做是不好的形式还是我应该简单地假设参数是在没有前导空格的情况下传递的?

Ide*_*lic 7

使用strip功能:

define FOO
# ...
/home/user/dir/bin/$(strip $(1))
endef
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文本函数.因此,为避免strip在任何地方使用,最好在将参数传递给函数时避免使用逗号后的空格.