用途:当工程 Profile 标明 build_system: cmake,或需要对 CMake MCU 工程做配置、重编译、确认固件产物时使用;烧录、调试流程需要新的 ELF、HEX 或 BIN 时也可触发。
主要能力:自动探测工具链、生成器(优先 Ninja,其次宿主已安装的 Make)与构建类型(调试导向默认 Debug,否则 RelWithDebInfo);优先复用 CMakePresets.json 预设,否则检查 CMakeLists.txt、构建目录和工具链文件。脚本启动即读取工程根目录 .em_skill.json 的 skill_profiles.build-cmake,自动复用上次成功构建参数,显式参数优先。成功后将 source、build_dir、preset、generator、build_type、toolchain、target 及首选产物持久化,并更新 Project Profile。
使用方式:先阅读 references/usage.md 确认动作;直接运行目标动作即可复用缓存,仅在断言缓存必须存在时使用 --resume --profile default。有预设时用 --list-presets 列出后以 --preset <name> 构建;无预设时用 --source、--build-dir、--generator、--build-type、--toolchain 手动配置。脚本用 Python 标准库与 subprocess 调用 cmake,构建调度跨平台;Windows 上优先 Ninja。输出配置命令、构建命令、构建目录、生成器和首选产物路径,构建目录保持绝对路径。
限制与失败分流:缺少 cmake 或生成器返回 environment-missing;预设损坏、工具链文件缺失或目标名无效返回 project-config-error;构建成功但无可烧录/调试产物返回 artifact-missing;多个等价预设或目标无法安全选择返回 ambiguous-context。成功后建议衔接 flash-openocd 或 debug-gdb-openocd。