Make:如何将模式匹配的变量传递到列表

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

比方说,我的 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 …
我怎样才能做到这一点?
谢谢!

makefile pattern-matching
1个回答
0
投票

不,没有将通配符应用于变量名称的机制。

如果像您的示例一样,您的变量是这样系统命名的,您可以执行类似的操作

MYLIST := $(patsubst %,SUB_TEST%,$(shell bash -c 'echo 1..3'))

但是

make
本身缺乏任何算术功能,并且默认 shell
/bin/sh
的算术功能非常有限,基本上迫使您使用外部实用程序来生成要循环的数字列表,并且您需要自己跟踪范围的顶部。 (如果您不喜欢 Bash,也许您有
jot
;或者您可以使用简单的 Perl 单行代码,如
perl -le 'print for 1..3'
。)

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