build-cmake

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

构建 CMake 工程

Building CMake Projects

适用场景

Applicable Scenarios

  • Project Profile
    中标明
    build_system: cmake
  • 用户希望对 CMake MCU 工程执行配置、重编译或确认固件产物。
  • 烧录或调试流程需要新的
    ELF
    HEX
    BIN
  • 需要在构建前确认环境是否就绪(cmake、生成器、工具链)。
  • Project Profile
    indicates
    build_system: cmake
    .
  • Users want to configure, recompile, or confirm firmware artifacts for CMake MCU projects.
  • The flashing or debugging process requires new
    ELF
    ,
    HEX
    , or
    BIN
    files.
  • Need to confirm if the environment is ready before building (cmake, generator, toolchain).

必要输入

Required Inputs

  • 工作区路径,或一份已有的
    Project Profile
  • 可选的构建预设、构建目录、目标名、生成器、构建类型和工具链文件。
  • Workspace path, or an existing
    Project Profile
    .
  • Optional build presets, build directory, target name, generator, build type, and toolchain file.

自动探测

Automatic Detection

  • 若存在
    CMakePresets.json
    ,优先使用脚本的
    --list-presets
    列出并选择预设。
  • 否则检查
    CMakeLists.txt
    、已有构建目录和工具链文件。
  • 若已有成功的构建目录且与当前意图一致,优先复用。
  • 生成器由脚本自动探测,优先
    Ninja
    ,其次是宿主机上已安装的 Make 工具。
  • 对调试导向请求默认使用
    Debug
    ,否则默认使用
    RelWithDebInfo
  • If
    CMakePresets.json
    exists, prioritize using the script's
    --list-presets
    to list and select presets.
  • Otherwise, check
    CMakeLists.txt
    , existing build directories, and toolchain files.
  • If there is an existing successful build directory that matches the current intent, reuse it first.
  • The generator is automatically detected by the script, prioritizing
    Ninja
    , followed by the Make tool installed on the host machine.
  • For debugging-oriented requests,
    Debug
    is used by default; otherwise,
    RelWithDebInfo
    is the default.

执行步骤

Execution Steps

  1. 先阅读 references/usage.md,确认本次是环境探测、列出预设、执行构建,还是仅扫描产物。
  2. 若不确定环境是否就绪,先运行自带脚本 scripts/cmake_builder.py
    --detect
    模式确认。
  3. 若存在 CMakePresets.json,使用
    --list-presets
    列出预设,再用
    --preset <name>
    构建。
  4. 若无预设,使用
    --source
    --build-dir
    --generator
    --build-type
    --toolchain
    手动配置构建。
  5. 读取脚本输出的构建结果和产物扫描报告,重点关注首选产物(ELF > HEX > BIN)和失败分类。
  6. 将构建目录、产物路径、产物类型和生成器信息写回
    Project Profile
    ,并在需要时交给下游 skill。
  1. First read references/usage.md to confirm whether this is environment detection, listing presets, executing a build, or just scanning artifacts.
  2. If unsure whether the environment is ready, first run the built-in script scripts/cmake_builder.py in
    --detect
    mode to confirm.
  3. If CMakePresets.json exists, use
    --list-presets
    to list presets, then use
    --preset <name>
    to build.
  4. If no presets exist, manually configure the build using
    --source
    ,
    --build-dir
    ,
    --generator
    ,
    --build-type
    ,
    --toolchain
    .
  5. Read the build results and artifact scan report output by the script, focusing on the preferred artifacts (ELF > HEX > BIN) and failure categories.
  6. Write the build directory, artifact path, artifact type, and generator information back to
    Project Profile
    , and pass it to downstream skills when needed.

失败分流

Failure Diversion

  • 当缺少
    cmake
    或所需生成器时,返回
    environment-missing
  • 当配置或构建因预设损坏、缺失工具链文件或目标名无效而失败时,返回
    project-config-error
  • 当构建看似成功但未找到可烧录或可调试产物时,返回
    artifact-missing
  • 当存在多个同样合理的预设或固件目标,且任意选择都不安全时,返回
    ambiguous-context
  • When
    cmake
    or the required generator is missing, return
    environment-missing
    .
  • When configuration or build fails due to corrupted presets, missing toolchain files, or invalid target names, return
    project-config-error
    .
  • When the build appears successful but no flashable or debuggable artifacts are found, return
    artifact-missing
    .
  • When there are multiple equally reasonable presets or firmware targets, and any selection is unsafe, return
    ambiguous-context
    .

平台说明

Platform Notes

  • 在 Windows 上,除非工作区明确要求特定 Visual Studio shell,否则优先
    Ninja
    ,避免依赖特定开发者命令环境。
  • 自带脚本使用 Python 标准库和 subprocess 调用 cmake,因此构建调度路径本身是跨平台的。
  • 输出中的构建目录应保持为绝对路径,方便下游烧录和调试 skill 直接复用。
  • On Windows, unless the workspace explicitly requires a specific Visual Studio shell, prioritize
    Ninja
    to avoid dependency on a specific developer command environment.
  • The built-in script uses Python standard libraries and subprocess to call cmake, so the build scheduling path itself is cross-platform.
  • The build directory in the output should remain an absolute path for direct reuse by downstream flashing and debugging skills.

输出约定

Output Conventions

  • 输出配置命令、构建命令、构建目录、所选生成器和首选产物路径。
  • artifact_path
    artifact_kind
    和探测到的工具链细节更新
    Project Profile
  • 成功后推荐
    flash-openocd
    debug-gdb-openocd
  • Output configuration commands, build commands, build directory, selected generator, and preferred artifact path.
  • Update
    Project Profile
    with
    artifact_path
    ,
    artifact_kind
    , and detected toolchain details.
  • After success, recommend
    flash-openocd
    or
    debug-gdb-openocd
    .

交接关系

Handover Relationships

  • 当下一步意图是给硬件烧录程序时,将成功构建结果交给
    flash-openocd
  • 当下一步需要符号信息或调试会话时,将成功构建结果交给
    debug-gdb-openocd
  • When the next step is to flash the program to hardware, pass the successful build result to
    flash-openocd
    .
  • When the next step requires symbol information or a debugging session, pass the successful build result to
    debug-gdb-openocd
    .