改 Keil 工程文件改了 5 次才成功——XML 编辑的血泪教训

改 Keil 工程文件改了 5 次才成功——XML 编辑的血泪教训
一句话: 要从 Keil 工程里踢掉一个源文件直接编辑.uvprojxXML 格式。看似简单——删几行 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 关掉再改。有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。