Files
STM32F4-Base/.dsh/skills/new-source-file/SKILL.md
T
wandering1 7a54fdbc73 docs(build): @build 统一为 keil-build skill,build.bat 降为等价原生入口
- AGENTS.md 构建条:@build = keil-build skill(写明 UV4 解析链、退出码
  0/1/2/3、日志路径);MDK-ARM/build.bat 明确为等价原生入口,并列出
  它相对 skill 缺的三项(无超时保护 / UV4 只认 DTU_KEIL_UV4 / 失败 dump 整份日志)
- keil-build SKILL.md「本仓库」段同步:skill 即 @build 口径
- 3 个 skill(new-source-file / ui-verify / new-machine-setup)与 8 篇
  docs、README、MDK-ARM/README、环境与部署 3 篇:命令示例与 @build
  标识统一改指 skill
- scripts/stack_report.py 的构建提示串改指 skill
- 环境与部署:DTU_KEIL_UV4 使用方补 keil_build.py;反向测试期望的报错
  文案对齐 skill 实际输出(BUILD_ENV_ERROR: ... is set but not a file)
- 刻意未改:docs/问题记录/项目审查与优化建议报告.md 的 P2-14/N-18
  历史审计条目(属史实记录);test/run_all_suites.py 的 BUILD_BAT
  常量(是代码、非文档,改动需另做验证)
2026-10-10 16:19:14 +08:00

2.0 KiB
Raw Blame History

name, description, whenToUse
name description whenToUse
new-source-file 新增 .c 源文件的双端注册:MDK-ARM/STM32F407-Demo.uvprojx 与 simulator/CMakeLists.txt 均为显式文件列表,新文件必须手动加进两处再双端构建验证。 新建 App/、Drivers/BSP/ 下的 .c 文件,或构建/运行报 undefined reference、"改了代码没生效" 而怀疑文件漏注册时。

新文件双端注册

本工程 Keil 工程与 PC 模拟器都使用显式文件列表(无通配扫描)——新 .c 文件不手动注册就不会被编译;只注册一端 = 另一端静默缺文件(不一定报错,功能悄悄不生效)。

注册步骤

  1. Keil MDK:编辑 MDK-ARM/STM32F407-Demo.uvprojx,在对应 <GroupName> 的 <Files> 中按相邻条目格式插入(..\ 开头反斜杠路径):
<File>
  <FileName>ui_new_module.c</FileName>
  <FileType>1</FileType>
  <FilePath>..\Drivers\BSP\UI\ui_new_module.c</FilePath>
</File>

现有组:App、Drivers/BSP、Drivers/BSP/UI、Test 等;新文件放语义对应的组。

  1. 模拟器(仅当文件需 PC 端编译,如 Drivers/BSP/UI/*.c):在 simulator/CMakeLists.txt 的 set(UI_SOURCES ...) 列表加一行 ${UI_DIR}/ui_new_module.c。非 UI 模块文件通常不需模拟器注册。

  2. 双端构建验证(两端都必须过):

cmake --build simulator/build --config Debug   # 0 警告
& '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py   # BUILD_OK,0 错 0 警

注意

  • 禁止把源文件复制进 simulator/——两端共用 Drivers/BSP/ 原件(UI_界面制作流程.md C7)
  • 只注册 .c(含 .s);.h 靠 include 路径找到,不加工程
  • 漏注册的典型症状:一端编译失败(undefined reference)或一端行为悄悄停留在旧逻辑
  • 注册完成后跑回归:UI 文件 → ui-verify skill;其他模块 → @test(.dsh/skills/serial-boot-test/scripts/run_boot_test.py)
  • 改过 CMakeLists.txt 后需重新 cmake -B build 配置