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

如何在Makefile中基于目标名称动态执行对应命令?

批量生成Makefile测试用例规则的实现方法

方法1:静态模式规则(推荐,可控性强)

先集中管理测试用例列表,再通过静态模式批量生成规则:

# 列出所有测试用例目标
TEST_CASES := tc1 tc2 tc3

# 静态模式规则:匹配每个测试用例目标
$(TEST_CASES): tc%: ./a.exe
	./a.exe < ./tc$*.txt

# 可选:添加all目标一键运行所有测试
all: $(TEST_CASES)

# 声明伪目标,避免与同名文件冲突
.PHONY: all $(TEST_CASES)
  • TEST_CASES变量统一管理测试用例,后续新增/删除只需修改此变量
  • tc%为目标匹配模式,$*会自动替换为模式匹配到的部分(比如目标是tc1,$*就是1)
  • .PHONY确保执行make tc1或make all时,不会因为存在同名文件tc1而跳过命令执行

方法2:通用模式规则(无需提前列测试用例)

如果所有测试用例都是tcN格式,且对应tcN.txt文件存在,可直接用通用模式规则:

tc%: ./a.exe
	./a.exe < ./tc$*.txt

# 可选:一键运行所有匹配的测试用例(自动识别所有tcN.txt文件)
TEST_CASES := $(patsubst ./tc%.txt,tc%,$(wildcard ./tc*.txt))
all: $(TEST_CASES)
.PHONY: all $(TEST_CASES)
  • wildcard ./tc*.txt自动找出当前目录下所有tcN.txt文件
  • patsubst将文件名转换为对应的目标名(比如tc1.txt转成tc1)
  • 此方式适合测试用例文件较多且频繁新增的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:11:12