如何在 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 "$@"
我明白了 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 "$@"