mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-03-30 21:53:28 +08:00
174 lines
3.9 KiB
Markdown
174 lines
3.9 KiB
Markdown
---
|
|
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
|
|
|
|
1. **Run Diagnostics**: Execute `cmake --build`, `clang-tidy`, `cppcheck`
|
|
2. **Parse Errors**: Group by file and sort by severity
|
|
3. **Fix Incrementally**: One error at a time
|
|
4. **Verify Each Fix**: Re-run build after each change
|
|
5. **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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```text
|
|
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<User> 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
|
|
|
|
1. **Compilation errors first** - Code must compile
|
|
2. **Linker errors second** - Resolve undefined references
|
|
3. **Warnings third** - Fix with `-Wall -Wextra`
|
|
4. **One fix at a time** - Verify each change
|
|
5. **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/`
|