改 Keil 工程文件改了 5 次才成功——XML 编辑的血泪教训
2026/7/15 10:08:54 网站建设 项目流程

一句话: 要从 Keil 工程里踢掉一个源文件,直接编辑.uvprojx(XML 格式)。看似简单——删几行 XML 就行。但实际上:正则没匹配到、残留空标签、IDE 从缓存恢复了改动。5 次尝试才搞对。

适合谁读:适合嵌入式开发者、单片机初学者及遇到类似问题的工程师

为什么不用 Keil 界面操作

改一个文件——界面点点删就行。但要批量删 10 个源文件——界面操作太慢。脚本编辑项目文件才是正路。

Keil 的.uvprojx是 XML 格式,里面<File>块记录每个源文件。


5 次失败

第 1 次:Perl 正则没匹配到

# 想法:匹配整个 Group 再整体删掉 s/<Group>.*?<\/Group>//gs;

静默失败。正则里的缩进、换行符都和实际 XML 对不上。结果:什么也没删。

教训:XML 别用多行正则。缩进格式是不可靠的前提。

第 2 次:grep -v 留了空标签

grep -v "spi_drv.c" old.uvprojx > new.uvprojx

删了<FileName><FilePath>行,但<File></File>空标签还在。Keil 打开工程时报"无效的工程文件"。

教训:删 XML 条目要删完整块,不是单独行。

第 3 次:Keil 后台重写了文件

改完之后验证通过。打开 Keil——它从缓存把旧内容写回去了,改动全部丢失。

教训:编辑项目文件之前,关掉 Keil。

第 4 次:漏了工作区文件

.uvprojx改对了,但.uvoptx(工作区文件)里还有旧条目的缓存。Keil 打开时把旧条目恢复到了项目文件里。

教训:改.uvprojx也要同步清理.uvoptx

第 5 次:成功

# 1. 关掉 Keil # 2. 用 grep -v 删 FileName + FilePath # 3. 手动检查并删掉残留的空 <File></File> 标签 # 4. 同样清理 .uvoptx # 5. 重新打开 Keil,检查文件列表

总结

修法
多行正则匹配不可靠逐行处理,别信缩进
grep -v 留空标签删完后读文件确认,清理空标签
Keil 重写文件改之前关掉 Keil
.uvoptx恢复旧条目同步清理工作区文件
不确定改对了没打开 Keil 检查文件列表

XML 编辑的结论:别一次搞定,改一步验证一步。Keil 关掉再改。



有用的话点个收藏,下次调试直接用。有问题欢迎评论区交流,看到了都会回。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询