리팩토링by affaan-m
C++ 빌드 및 수정
C++ 빌드 오류, CMake 문제 및 링커 문제를 점진적으로 수정합니다. 최소한의 수술적 수정을 위해 cpp-build-resolver 에이전트를 호출합니다.
한 줄 평가 — 다음 사람 도와주세요
언제 쓰나
C++ 프로젝트 빌드 시 오류가 발생할 때
SKILL.md
Lattice 한국어 번역 · 원본 affaan-m/everything-claude-code (841beea). 복사 → 저장하면 Claude Code가 인식합니다.
---
description: C++ 빌드 오류, CMake 문제 및 링커 문제를 최소한의 변경으로 점진적으로 수정합니다. 최소한의 수정으로 빌드를 수정하는 cpp-build-resolver 에이전트를 호출합니다.
---
# C++ 빌드 및 수정
이 명령은 **cpp-build-resolver** 에이전트를 호출하여 최소한의 변경으로 C++ 빌드 오류를 점진적으로 수정합니다.
## 이 명령어의 기능
1. **진단 실행**: `cmake --build`, `clang-tidy`, `cppcheck` 실행
2. **오류 파싱**: 파일별로 그룹화하고 심각도에 따라 정렬
3. **점진적인 수정**: 한 번에 하나의 오류 수정
4. **각 수정 사항 확인**: 수정 후 다시 빌드
5. **요약 보고**: 수정된 내용과 남은 문제를 표시
## 언제 사용해야 하는가
다음과 같은 경우 `/cpp-build`를 사용합니다:
- `cmake --build build`가 오류로 실패
- 링커 오류(정의되지 않은 참조, 중복 정의)
- 템플릿 인스턴스화 실패
- 포함/의존성 문제
- 빌드를 깨뜨리는 변경 사항을 가져온 후
## 실행되는 진단 명령
```bash
# CMake 구성
cmake -B build -S .
# 빌드
cmake --build build 2>&1 | head -100
# 정적 분석(사용 가능 시)
clang-tidy src/*.cpp -- -std=c++17
cppcheck --enable=all src/
```
## 예시 세션
```text
사용자: /cpp-build
에이전트:
# C++ 빌드 해결
## 초기 진단
```bash
$ cmake --build build
src/service/user.cpp:25:15: 오류: 선언되지 않은 식별자 'UserRepository' 사용
src/handler/api.cpp:42:9: 오류: 호출에 대한 일치하는 함수가 없습니다
src/handler/api.cpp:58:1: 오류: 비:void 함수가 반환 값을 반환하지 않습니다
```
오류 발견: 3
## 수정 1: 선언되지 않은 식별자
파일: src/service/user.cpp:25
오류: 선언되지 않은 식별자 'UserRepository' 사용
원인: 포함되지 않은 헤더
```cpp
// 포함 추가
#include "repository/user_repository.hpp"
```
```bash
$ cmake --build build
# 2개의 오류 남음
```
## 수정 2: 일치하는 함수 없음
파일: src/handler/api.cpp:42
오류: 호출에 대한 일치하는 함수가 없습니다
```cpp
// 수정
process(params.get("count"));
// To
process(std::stoi(params.get("count")));
```
```bash
$ cmake --build build
# 1개의 오류 남음
```
## 수정 3: 반환 값 없음
파일: src/handler/api.cpp:58
오류: 비:void 함수가 반환 값을 반환하지 않습니다
```cpp
std::optional<User> getUser(const std::string& id) {
if (id.empty()) {
return std::nullopt;
}
auto user = findUser(id);
// 반환 값 추가
return user;
}
```
```bash
$ cmake --build build
# 빌드 성공!
```
## 최종 확인
```bash
$ ctest --test-dir build --output-on-failure
테스트 프로젝트 빌드
1/5 테스트 #1: unit_tests ........ 통과 0.02 초
2/5 테스트 #2: integration_tests 통과 0.15 초
모든 테스트 통과.
```
## 요약
| 지표 | 수 |
|--------|-------|
| 빌드 오류 수정 | 3 |
| 링커 오류 수정 | 0 |
| 수정된 파일 | 2 |
| 남은 문제 | 0 |
빌드 상태: PASS: SUCCESS
## 일반적으로 수정되는 오류
| 오류 | 일반적인 수정 |
|-------|-------------|
| `선언되지 않은 식별자` | 포함 추가 또는 맞춤법 수정 |
| `일치하는 함수 없음` | 인수 유형 수정 또는 오버로드 추가 |
| `정의되지 않은 참조` | 라이브러리 연결 또는 구현 추가 |
| `중복 정의` | `inline` 사용 또는 .cpp로 이동 |
| `불완전한 유형` | 전방 선언 대신 `#include` 사용 |
| `멤버 이름 없음` | 멤버 이름 수정 또는 포함 추가 |
| `X를 Y로 변환할 수 없음` | 적절한 캐스트 추가 |
| `CMake 오류` | CMakeLists.txt 구성 수정 |
## 수정 전략
1. **컴파일 오류 먼저** - 코드는 컴파일되어야 합니다.
2. **링커 오류 두 번째** - 정의되지 않은 참조를 해결합니다.
3. **경고 세 번째** - `-Wall -Wextra`로 수정합니다.
4. **한 번에 하나의 수정** - 각 변경 사항을 확인합니다.
5. **최소한의 변경** - 리팩터링하지 말고 수정만 합니다.
## 중단 조건
에이전트는 다음 경우에 중단되고 보고됩니다:
- 3번 시도 후에도 동일한 오류가 발생하는 경우
- 수정이 더 많은 오류를 발생시키는 경우
- 구조적인 변경이 필요한 경우
- 외부 종속성이 누락된 경우
## 관련 명령
- `/cpp-test` - 빌드 성공 후 테스트 실행
- `/cpp-review` - 코드 품질 검토
- `verification-loop` 스킬 - 전체 확인 루프
## 관련
- 에이전트: `agents/cpp-build-resolver.md`
- 스킬: `skills/cpp-coding-standards/`필요한 도구
호버하면 설명CC
설치 + 호출 (2단계)
Claude Code CLI 기준.
- 1
SKILL.md 저장
아래 버튼으로 복사 → 다음 경로로 저장.
~/.claude/skills/everything-claude-code-c/SKILL.md - 2
호출
Claude Code 채팅창에서 자연어로 부르면 자동 발동:
예) C++ 프로젝트 빌드 시 오류가 발생할 때
트리거가 안 잡히면 SKILL.md의
description줄에 더 구체적인 한국어 키워드를 추가해보세요.