You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Makefile中将模式匹配的变量传入列表?

解决Makefile中获取指定前缀变量值列表的问题

要实现获取所有以SUB_TEST(或SUB_)开头的变量值并组成列表,你可以利用Make的内置变量和函数组合完成,具体步骤如下:

核心思路

  1. 筛选目标前缀的变量名:使用内置变量$(.VARIABLES)获取所有已定义变量名,再用filter函数筛选出符合前缀规则的变量。
  2. 遍历变量名并取值:用foreach遍历筛选后的变量名,通过$($(var))语法获取每个变量的实际值,拼接成空格分隔的列表。

完整示例Makefile

SUB_TEST1=PRJ1
SUB_TEST2=PRJ2
SUB_TEST3=PRJ3

# 方式1:匹配所有以SUB_TEST开头的变量
MYLIST := $(foreach var,$(filter SUB_TEST%,$(.VARIABLES)),$($(var)))

# 如果需要匹配所有以SUB_开头的变量,改用下面这行
# MYLIST := $(foreach var,$(filter SUB_%,$(.VARIABLES)),$($(var)))

test:
	@echo "my variables list: $(MYLIST)"

执行结果

运行make test后,输出为:

my variables list: PRJ1 PRJ2 PRJ3

错误写法说明

你之前尝试的两种写法都无法达到目的:

  • $(wildcard SUB_*):该函数用于匹配文件系统中以SUB_开头的文件,而非Makefile变量,完全不适用当前场景。
  • $(foreach i,$(SUB_%),$(i)):$(SUB_%)不是合法的变量引用,%在此上下文里没有通配符作用,无法匹配变量名。

内容的提问来源于stack exchange,提问作者Ezk13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 10:03:37