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

如何通过Makefile为各文件夹自动生成新版本XML文件?

用Makefile自动生成递增版本XML文件的解决方案

现有目录结构

upperfolder 
│
└───1
│   │   output_v1.xml
│   │   output_v2.xml
│   
└───2
│   │   output_v1.xml
│   
└───3

期望目录结构

upperfolder 
│
└───1
│   │   output_v1.xml
│   │   output_v2.xml
│   │   output_v3.xml
│   
└───2
│   │   output_v1.xml
│   │   output_v2.xml
│   
└───3
│   │   output_v1.xml

想要用Makefile实现上述目录更新,当前已有基础框架,但需要解决两个核心问题:

  1. 适配非纯数字命名的子文件夹,不用依赖文件夹名的特殊规则
  2. 自动获取每个子文件夹下output_v*.xml的最新版本号,递增后生成新版本路径,传给writer.py脚本(该脚本需要两个参数:旧版本XML路径、新版本XML路径)

当前的Makefile代码:

./upperfolder/%:
    --- 需获取文件夹%的最新版本号,递增后计算新版本文件名 --- 
    --- 将其传入Python脚本参数中 --- 
    python3 writer.py <previous_version_path_script> $@_v?.xml

all: ./upperfolder/1/output ./upperfolder/2/output ./upperfolder/3/output ./upperfolder/4/output 

解决方案与实现代码

核心思路

不用纠结文件夹名,直接在目标文件夹内匹配版本文件,提取版本号并取最大值;然后计算新版本号,拼接路径后调用脚本。

完整Makefile代码

# 定义函数:传入文件夹路径,返回该文件夹下output_v*.xml的最新版本号
define get_latest_version
$(shell ls $(1)/output_v*.xml 2>/dev/null | awk -F '_v|.xml' '{print $$2}' | sort -n | tail -1)
endef

# 通用目标规则:匹配upperfolder下任意子文件夹
./upperfolder/%:
	# 获取当前文件夹的最新版本号,无版本文件则设为0
	latest_version=$(call get_latest_version,$@); \
	if [ -z "$$latest_version" ]; then latest_version=0; fi; \
	# 计算新版本号
	new_version=$$((latest_version + 1)); \
	# 拼接旧版本路径(如果是第一个版本,旧路径为空,可根据脚本需求调整)
	old_path=""; \
	if [ $$latest_version -gt 0 ]; then old_path="$@/output_v$$latest_version.xml"; fi; \
	new_path="$@/output_v$$new_version.xml"; \
	# 调用Python脚本
	python3 writer.py $$old_path $$new_path

# 指定需要处理的子文件夹
all: ./upperfolder/1 ./upperfolder/2 ./upperfolder/3 ./upperfolder/4

关键细节说明

  • 版本号提取:get_latest_version函数通过ls匹配版本文件,用awk分割字符串提取版本号,再排序取最大值;2>/dev/null用来屏蔽无匹配文件时的错误提示
  • 空文件夹处理:如果子文件夹下没有任何output_v*.xml,默认最新版本号为0,新版本号为1,生成第一个版本文件
  • 适配任意文件夹名:目标规则./upperfolder/%中的%可以匹配任意命名的子文件夹,不管是数字还是字符串命名都能正常工作
  • 旧路径调整:如果你的writer.py要求第一个版本必须传入某个模板文件,可以把old_path的默认值改成模板路径,比如old_path="template.xml"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:25:18