如何在 Makefile 配方中连接变量

How to concatenate variable in Makefile recipe

我明白了 Makefile:

LIST = foo bar                                                                  
                                                                                
$(LIST):                                                                        
  echo $@

当我 运行 设定目标时,输出会按预期工作:

$ make foo
echo foo
foo

$ make bar
echo bar
bar

但是如果我连接一个字符串 another-,只有 another-foo 有效:

LIST = foo bar

another-$(LIST):
  echo $@
$ make another-foo 
echo another-foo
another-foo

$ make another-bar
make: *** No rule to make target 'another-bar'.  Stop.

如何连接目标以扩展到变量中的所有值?

您观察到的行为是标准的:写作时

another-$(LIST)

make 只是将 $(LIST) 替换为其内容,生成 another-foo bar.

也就是说,这与 bash 大括号表达式无关,例如 another-{foo,bar}.

然而,您可以通过执行以下操作来实现您想要的:

LIST = foo bar

$(addprefix another-,$(LIST)):
    echo "$@"