Skip to main content
Kodelyth ECC
Command

/cpp-build

Fix C++ build errors, CMake issues, and linker problems incrementally. Invokes the cpp-build-resolver agent for minimal, surgical fixes.

Run:/cpp-build

C++ Build and Fix

This command invokes the cpp-build-resolver agent to incrementally fix C++ build errors with minimal changes.

What This Command Does

  • Run Diagnostics: Execute cmake --build, clang-tidy, cppcheck
  • Parse Errors: Group by file and sort by severity
  • Fix Incrementally: One error at a time
  • Verify Each Fix: Re-run build after each change
  • Report Summary: Show what was fixed and what remains

When to Use

Use /cpp-build when:

  • cmake --build build fails with errors
  • Linker errors (undefined references, multiple definitions)
  • Template instantiation failures
  • Include/dependency issues
  • After pulling changes that break the build

Diagnostic Commands Run

# CMake configure
cmake -B build -S .

Build

cmake --build build 2>&1 | head -100

Static analysis (if available)

clang-tidy src/*.cpp -- -std=c++17 cppcheck --enable=all src/

Example Session

User: /cpp-build

Agent:

C++ Build Resolution

Initial Diagnostics

bash $ cmake --build build src/service/user.cpp:25:15: error: use of undeclared identifier 'UserRepository' src/handler/api.cpp:42:9: error: no matching function for call to 'process' src/handler/api.cpp:58:1: error: non-void function does not return a value

Errors found: 3

Fix 1: Undeclared Identifier

File: src/service/user.cpp:25 Error: use of undeclared identifier 'UserRepository' Cause: Missing include

cpp // Added include #include "repository/user_repository.hpp"

bash $ cmake --build build

2 errors remaining


Fix 2: No Matching Function

File: src/handler/api.cpp:42 Error: no matching function for call to 'process'

cpp // Changed process(params.get("count")); // To process(std::stoi(params.get("count")));

bash $ cmake --build build

1 error remaining


Fix 3: Missing Return

File: src/handler/api.cpp:58 Error: non-void function does not return a value

cpp std::optional getUser(const std::string& id) { if (id.empty()) { return std::nullopt; } auto user = findUser(id); // Added missing return return user; }

bash $ cmake --build build

Build successful!


Final Verification

bash $ ctest --test-dir build --output-on-failure Test project build 1/5 Test #1: unit_tests ........ Passed 0.02 sec 2/5 Test #2: integration_tests Passed 0.15 sec All tests passed.

Summary

| Metric | Count | |--------|-------| | Build errors fixed | 3 | | Linker errors fixed | 0 | | Files modified | 2 | | Remaining issues | 0 |

Build Status: PASS: SUCCESS

Common Errors Fixed

| Error | Typical Fix | |-------|-------------| | undeclared identifier | Add #include or fix typo | | no matching function | Fix argument types or add overload | | undefined reference | Link library or add implementation | | multiple definition | Use inline or move to .cpp | | incomplete type | Replace forward decl with #include | | no member named X | Fix member name or include | | cannot convert X to Y | Add appropriate cast | | CMake Error | Fix CMakeLists.txt configuration |

Fix Strategy

  • Compilation errors first - Code must compile
  • Linker errors second - Resolve undefined references
  • Warnings third - Fix with -Wall -Wextra
  • One fix at a time - Verify each change
  • Minimal changes - Don't refactor, just fix

Stop Conditions

The agent will stop and report if:

  • Same error persists after 3 attempts
  • Fix introduces more errors
  • Requires architectural changes
  • Missing external dependencies

Related Commands

  • /cpp-test - Run tests after build succeeds
  • /cpp-review - Review code quality
  • /verify - Full verification loop

Related

  • Agent: agents/cpp-build-resolver.md
  • Skill: skills/cpp-coding-standards/

Agents this command fires

Related skills