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

如何优化Makefile实现将dump文件夹文件批量复制到多个测试目录

优化后实现

PROJECT_DIR := $(realpath $(CURDIR))
BUILD_DUMP_DIR := $(PROJECT_DIR)/dump
# 配置区:可直接修改要复制的文件、目标测试目录
DUMP_FILES := pyproject.toml poetry.lock
DESTINATION_DIRS := unit system endtoend

# 自动生成所有目标文件完整路径
TARGETS := $(foreach dir,$(DESTINATION_DIRS),$(addprefix $(BUILD_DUMP_DIR)/tests/$(dir)/,$(DUMP_FILES)))

# 静态模式规则:匹配所有目标,对应源文件为dump目录下的同名文件
$(TARGETS): $(BUILD_DUMP_DIR)/tests/%/$(notdir $@) : $(BUILD_DUMP_DIR)/$(notdir $@)
	@echo "=> 复制 $< 到 $@"
	@cp $< $@

# 声明伪目标,避免存在同名文件时命令不执行
.PHONY: copy-dump
copy-dump: $(TARGETS)

核心优化点

  • 配置逻辑分离:要复制的文件、目标目录统一放在开头配置区,后续新增文件/测试目录直接修改配置即可,无需调整复制逻辑
  • 消除重复代码:无需为pyproject.toml和poetry.lock分别定义两套变量、两套复制规则,一套逻辑覆盖所有待复制文件
  • 规则更安全:使用静态模式规则只会匹配我们生成的TARGETS目标,不会意外影响Makefile中其他同名目标
  • 原生支持增量更新:只有源文件修改、或者目标文件不存在时才会执行复制操作,不会做无用重复操作

如果你的测试目录实际是在项目根目录下的tests而非dump/tests,修改TARGETS生成逻辑里的路径前缀即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:06:08