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

如何用单命令执行多Makefile?或编写循环批量执行的Makefile?

批量执行不同NAME参数的Makefile解决方案

我懂这种搜不到答案的挫败感——有时候问题卡就卡在不知道怎么把需求转换成准确的搜索关键词!针对你要批量给tad、tad01到tad27这些值设置NAME标签,重复执行Makefile的需求,这里有两个实用的方案:

方案1:用Shell循环直接调用Make

在终端里运行这段脚本,它会自动遍历所有需要的NAME值,每次调用Make时传入对应的参数:

# 先处理基础的tad
make NAME=tad doc clean

# 再循环处理tad01到tad27
for i in {01..27}; do
    make NAME=tad$i doc clean
done

如果你的场景不需要单独处理tad(只需要tad01到tad27),删掉第一行的make NAME=tad doc clean就行。这个方法不需要修改原Makefile,直接在终端执行就能搞定。

方案2:在Makefile内部添加批量目标

如果你希望只需要执行一次make命令就能完成所有操作,可以修改你的Makefile,添加以下内容:

# 定义所有需要处理的NAME列表:tad + tad01到tad27
ALL_NAMES := tad $(addprefix tad, $(shell seq -w 01 27))

# 批量执行的总目标
batch: $(ALL_NAMES)

# 为每个NAME生成对应的执行规则
$(ALL_NAMES):
	@make NAME=$@ doc clean

# 别忘了把新添加的目标加到PHONY里,避免和文件重名冲突
.PHONY: batch $(ALL_NAMES) doc clean

之后在终端运行make batch,Make就会自动依次用每个NAME值执行doc和clean目标。

小提示

  • 如果你的Makefile里NAME参数还控制其他逻辑(比如生成特定命名的文件),这两个方案都能正确传递参数,不会影响原有逻辑。
  • 如果需要跳过某个特定的tadxx值,比如tad10,方案1里可以在循环里加判断,方案2里直接从ALL_NAMES列表里删掉对应的项就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:40:37