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

如何在Makefile中根据指定索引自动匹配赋值对应对象变量?

解决方案

可以通过Makefile的foreach、call和word函数组合实现需求,完整代码如下:

index := 1 2 3 4 5
objects := one_obj two_obj three_obj four_obj five_obj
act_idx := 1 3

# 定义辅助函数,根据索引获取对应对象
define get_obj
$(word $(1),$(objects))
endef

# 遍历活跃索引,拼接目标对象列表
act_obj := $(foreach idx,$(act_idx),$(call get_obj,$(idx)))

all :
    @echo act_obj = $(act_obj)

关键逻辑说明

  • word $(1),$(objects):word函数用于从列表中取出第N个元素(N由传入的第一个参数$(1)指定),刚好和index里的数值一一对应,比如传入1就取objects的第一个元素one_obj。
  • define get_obj...endef:封装一个可复用的辅助逻辑,避免重复编写取值代码。
  • foreach idx,$(act_idx),$(call get_obj,$(idx)):遍历act_idx中的每个索引值,逐个调用辅助函数获取对应对象,最终将所有结果拼接成完整的目标列表,赋值给act_obj。

执行make all后,输出结果为:act_obj = one_obj three_obj

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:50:30