比方说,我的 makefile 中有一些变量:
SUB_TEST1=PRJ1
SUB_TEST2=PRJ2
SUB_TEST3=PRJ3
…
我想抓取这个变量并将其放入列表中,然后传递给目标
SUB_TEST1=PRJ1
SUB_TEST2=PRJ2
SUB_TEST3=PRJ3
MYLIST:= $(wildcard SUB_*)
# or
# MYLIST:= $(foreach i,$(SUB_%),$(i))
test:
echo "my variables list: $(MYLIST)"
…
预期输出:
我的变量列表:PRJ1 PRJ2 PRJ3 …
我怎样才能做到这一点?
谢谢!
不,没有将通配符应用于变量名称的机制。
如果像您的示例一样,您的变量是这样系统命名的,您可以执行类似的操作
MYLIST := $(patsubst %,SUB_TEST%,$(shell bash -c 'echo 1..3'))
但是
make
本身缺乏任何算术功能,并且默认 shell /bin/sh
的算术功能非常有限,基本上迫使您使用外部实用程序来生成要循环的数字列表,并且您需要自己跟踪范围的顶部。 (如果您不喜欢 Bash,也许您有 jot
;或者您可以使用简单的 Perl 单行代码,如 perl -le 'print for 1..3'
。)