Compilation et correction en c++
/cpp-buildDiagnostique et corrige les erreurs de compilation, dépendances et configuration C++.
description: Fix C++ build errors, CMake issues, and linker problems incrementally. Invokes the cpp-build-resolver agent for minimal, surgical fixes.
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 buildfails 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
$ 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
// Added include
#include "repository/user_repository.hpp"
$ 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'
// Changed
process(params.get("count"));
// To
process(std::stoi(params.get("count")));
$ 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
std::optional<User> getUser(const std::string& id) {
if (id.empty()) {
return std::nullopt;
}
auto user = findUser(id);
// Added missing return
return user;
}
$ cmake --build build
Build successful!
## Final Verification
$ 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: SUCCESSCommon 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 qualityverification-loopskill - Full verification loop
Related
- Agent:
agents/cpp-build-resolver.md - Skill:
skills/cpp-coding-standards/