Gcc
GCC 嵌入式工程构建工具(CMake + arm-none-eabi-gcc),用于扫描 CMake 型嵌入式工程、 列出预设、配置、编译、重建、清理和分析 ELF...
Install
npx skills add zhinkgit/embeddedskills --skill gcc -g -a claude-code -y- Repository
- zhinkgit/embeddedskills777
- Category
- Engineering
- Updated
- 16d ago
- License
- MIT
- Context cost
- Lightabout 897 tokens
- Runs scripts
- Yes, review before use
What it does
GCC 嵌入式工程构建工具(CMake + arm-none-eabi-gcc),用于扫描 CMake 型嵌入式工程、 列出预设、配置、编译、重建、清理和分析 ELF 大小。当用户提到 GCC、arm-none-eabi、 CMake 嵌入式编译、Ninja 构建、ELF 大小分析、arm-gcc、交叉编译、cmake --build、 cmake --preset 时自动触发,也兼容 /gcc 显式调用。即使用户只是说"编译一下"或 "看看固件多大",只要上下文涉及 CMake 嵌入式 GCC 工程就应触发此 skill。
GCC 嵌入式工程构建
本 skill 提供基于 CMake + arm-none-eabi-gcc 的嵌入式工程发现、preset 枚举、配置生成、增量编译、全量重建、清理和 ELF 大小分析能力。
范围说明:当前仅支持 CMake 型 GCC 嵌入式工程,不覆盖纯 Makefile 工程。
配置
环境级配置(skill/config.json)
skill 目录下的 config.json 包含环境级配置,首次使用前确认 cmake_exe 路径正确:
{
"cmake_exe": "cmake",
"toolchain_prefix": "arm-none-eabi-",
"toolchain_path": "",
"operation_mode": 1
}
cmake_exe:cmake 可执行文件路径,默认从 PATH 查找toolchain_prefix:工具链前缀,默认arm-none-eabi-,用于定位 size 等工具toolchain_path:工具链 bin 目录,为空时从 PATH 查找operation_mode:1直接执行 /2输出风险摘要但不阻塞 /3执行前确认
工程级配置(workspace/.embeddedskills/config.json)
工程级共享配置统一保存在工作区的 .embeddedskills/config.json 中:
{
"gcc": {
"project": "",
"preset": "",
"log_dir": ".embeddedskills/build"
}
}
project:默认工程路径(相对 workspace),构建成功后会自动更新preset:默认 CMake preset 名称,构建成功后会自动更新log_dir:构建日志输出目录,默认.embeddedskills/build
参数解析优先级
参数解析顺序(从高到低):
- CLI 显式参数
- 环境级配置(skill/config.json)
- 工程级配置(.embeddedskills/config.json)
- state.json(上次构建记录)
- 搜索/询问
冲突解决规则:同一参数存在多个来源时,以序号最小的来源为准;高序号来源仅在低序号来源未提供该参数时生效。例如:CLI 已指定 --preset Debug,则忽略 state.json 中记录的上次 preset。
子命令
| 子命令 | 用途 | 风险 |
|---|---|---|
scan | 搜索当前目录下的 CMake 嵌入式工程 | 低 |
presets | 列出 CMakePresets.json 中的 configure/build preset | 低 |
configure | 执行 cmake --preset 生成构建系统 | 中 |
build | 增量编译 cmake --build | 中 |
rebuild | 清理后全量重建 | 中 |
clean | 清理构建目录 | 高 |
size | 分析 ELF 文件大小(text/data/bss 和内存使用) | 低 |
执行流程
- 读取
config.json,确认cmake_exe路径有效 - 未提供有效子命令时默认执行
scan - 未提供工程路径时先执行
scan搜索工程 - 发现多个工程或多个 preset 时列出选项让用户选择,绝不自动猜测
configure/build/rebuild/clean按operation_mode决定是否需要确认build前自动检测是否已 configure,未配置时提示先执行 configurebuild/rebuild成功后返回elf_file,供jlink/openocd继续使用size默认分析最近一次构建产物的 .elf 文件
脚本调用
skill 目录下有三个 Python 脚本,使用标准库实现,无额外依赖。
