我听不懂makefile中patsubst的输出

问题描述 投票:1回答:1

这是有罪的makefile:

$ cat -n example.mak
     1  define this
     2          $(patsubst $(1)/%.o,%.o,why_this_does/that.o)
     3          $(patsubst butnot/%.o,%.o, butnot/but_not_that.o)
     4  endef
     5
     6  why:
     7          $(info $(call this, why_this_does) ?)

这是我的问题:

$ make -f example.mak 
        why_this_does/that.o
        but_not_that.o ?
make: 'why' is up to date.
function makefile output gnu-make substitution
1个回答
0
投票

根本原因不在patsubst中,而在call中。 The manual有一个注释:

最后的警告:将空白添加到要调用的参数时要小心。与其他函数一样,第二个及后续参数中包含的所有空格都将保留;这可能会导致奇怪的后果。提供调用参数时,通常最安全的方法是删除所有多余的空格。

并且的确是,如果您替换,则>

$(info $(call this, why_this_does) ?)

作者

$(info $(call this,why_this_does) ?)

您得到想要的。

© www.soinside.com 2019 - 2024. All rights reserved.