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

如何在Makefile中获取已定义列表的指定单个元素?

Makefile 列表元素提取方案

GNU Make 不支持 ${FILES[0]} 类数组下标取值语法,需通过内置的word函数实现指定位置元素提取:

  • 函数语法:$(word <索引>, <目标列表>),注意索引从1开始计数,而非0
  • 提取第一个元素:$(word 1, $(FILES))
  • 提取第二个元素:$(word 2, $(FILES))

示例代码

调整后的实现代码如下:

FILES:= file0 \
        file1

all: $(FILES)

# 用法示例:直接使用提取到的第一个元素
$(FILES):
        echo "write on file 0 something" > "$(word 1, $(FILES))"
        echo "write on file 1 something else" > "$(word 2, $(FILES))"

补充说明

  • 如果你是需要在生成对应文件的规则里获取当前目标的文件名,直接使用自动变量$@即可,无需手动提取列表元素,写法更简洁:
    $(FILES):
          echo "write on $@ something" > $@
    
  • 如果需要提取连续的多个元素,可以使用wordlist函数,语法为$(wordlist <起始索引>, <结束索引>, <目标列表>),例如提取前两个元素写为$(wordlist 1, 2, $(FILES))
  • 若指定的索引大于列表总长度,word函数会返回空值,使用前需确认索引取值合法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:04