AgentSkillsCN

cmake-build

当用户提出构建、编译、配置、运行 Ninja、重新构建组件、清除缓存,或就 TheRock 项目、rocm-libraries 项目中的 CMake 配置、构建目标、编译流程展开讨论时,可调用此技能。关键词包括:Ninja、CMake、Build、Compile、组件名称(如 miopen、hipDNN、rocblas 等)。

SKILL.md
--- frontmatter
name: cmake-build
description: Use this skill when the user asks to build, compile, configure, run ninja, rebuild components, expunge, or discusses CMake configuration, build targets, or compilation for TheRock or rocm-libraries projects. Activates on keywords like ninja, cmake, build, compile, component names (miopen, hipDNN, rocblas, etc.).
version: 1.0.0

CMake Superbuild Patterns

TheRock Build System

TheRock uses an ExternalProject-based superbuild with component targets.

Build Directory Structure

code
<worktree>/build/
├── <component>/
│   ├── build/    # CMake build tree
│   ├── stage/    # Install tree (this component only)
│   ├── dist/     # stage/ + runtime dependencies merged
│   └── stamp/    # Incremental build tracking
└── dist/rocm/    # Unified ROCm installation

Component Targets

TargetPurpose
ninja <component>Full build (configure + build + stage + dist)
ninja <component>+buildRebuild after source changes
ninja <component>+distUpdate artifacts without rebuild
ninja <component>+expungeClean slate rebuild

Common Components

hipify, clr, rocblas, rocfft, miopen, hipDNN, composable_kernel, rccl, rocprofiler

TheRock Configuration

bash
cmake -B build -GNinja \
  -DTHEROCK_AMDGPU_FAMILIES=gfx1100 \
  -DCMAKE_C_COMPILER_LAUNCHER=ccache \
  -DCMAKE_CXX_COMPILER_LAUNCHER=ccache

Fetching Sources

bash
./build_tools/fetch_sources.py

rocm-libraries Build System

Standard CMake with Ninja:

bash
cd /home/AMD/sareeder/full/rocm-libraries
cmake -B build -GNinja
ninja -C build           # Build all
ninja -C build check     # Run all tests
ninja -C build unit-check # Unit tests only
ninja -C build format    # Auto-format code
ninja -C build clang-tidy # Static analysis

Test Binaries

Located at: build/bin/

  • hipdnn_backend_tests
  • hipdnn_frontend_tests
  • miopen_plugin_integration_test

Worktree Build Isolation

CRITICAL: Each worktree has its own build directory. Never reference another worktree's build.

WorktreeBuild Path
TheRock main/home/AMD/sareeder/TheRock/build
therock-consumption/home/AMD/sareeder/therock-consumption/build
therock-miopen-plugin-move/home/AMD/sareeder/therock-miopen-plugin-move/build
rocm-libraries/home/AMD/sareeder/full/rocm-libraries/build

Build Commands

Always use -C with absolute path:

bash
ninja -C /home/AMD/sareeder/TheRock/build <target>
ninja -C /home/AMD/sareeder/therock-consumption/build <target>
ninja -C /home/AMD/sareeder/full/rocm-libraries/build <target>