C++ CLion 완벽 가이드 | 설치·설정·디버깅·리팩토링·생산성 [#53-1]

C++ CLion 완벽 가이드 | 설치·설정·디버깅·리팩토링·생산성 [#53-1]

이 글의 핵심

C++ CLion IDE 마스터: CMake 설정이 안 돼요, 디버거가 연결 안 돼요 같은 문제 해결. 툴체인 설정, 고급 디버깅, 리팩토링 도구, 생산성 단축키, 프로덕션 패턴까지 900줄 분량으로 다룹니다.

들어가며: “C++ IDE 뭘 쓰지?”

VSCode vs CLion vs Visual Studio

VSCode는 가볍고 확장이 많지만, C++ 전용 기능은 제한적입니다. Visual Studio는 Windows에서 강력하지만 크로스 플랫폼이 아닙니다. CLion은 JetBrains의 C++ 전용 IDE로, Linux/macOS/Windows에서 동일한 경험을 제공하며 CMake·디버깅·리팩토링이 통합되어 있습니다.

실제 겪는 문제 시나리오:

- CMake 프로젝트를 열었는데 "툴체인을 찾을 수 없음" 에러 → GCC/Clang 경로 설정 필요
- 디버거로 실행했는데 브레이크포인트가 안 걸림 → Debug 빌드·심볼 확인 필요
- 10만 줄 코드베이스에서 함수 정의 찾기가 너무 느림 → CLion의 인덱싱·심볼 검색 활용
- 리팩토링할 때 변수명 바꾸면 수동으로 다 찾아서 고쳐야 함 → Rename Refactoring 사용
- 팀원마다 다른 OS(Linux/macOS/Windows) → CLion으로 동일한 워크플로 공유
- Docker 컨테이너 안에서 빌드·실행해야 함 → CLion 원격/도커 툴체인
- vcpkg/Conan 설치한 라이브러리 경로를 못 찾음 → 툴체인·CMake 옵션 연동
- 인덱싱 중 CPU 100%로 다른 작업이 불가 → 제외 경로 설정 필요
- "undefined reference" 에러가 나는데 헤더는 잘 찾음 → 링크 대상·소스 파일 누락

시나리오별 상세:

시나리오증상CLion에서 해결
신규 프로젝트CMake 없이 시작New Project → C++ Executable으로 자동 CMake 생성
레거시 MakefileMakefile만 있음CMake로 변환하거나, Compilation Database 생성 후 열기
멀티 플랫폼Win/Mac/Linux 각각 빌드CMake Presets로 프로파일 분리, 툴체인 전환
대규모인덱싱 10분 이상build, third_party 제외, 메모리 증가

CLion으로 해결:

문제CLion 기능
툴체인 설정Settings > Toolchains에서 GCC/Clang/MSVC 선택
디버깅GDB/LLDB 통합, 조건부 브레이크포인트, Watches
코드 탐색Go to Definition, Find Usages, Call Hierarchy
리팩토링Rename, Extract, Change Signature
크로스 플랫폼동일 UI, CMake Presets 지원
원격 개발SSH, Docker, WSL 툴체인

요구 환경: CLion 2023.x 이상, C++17 이상, CMake 3.16+

이 글을 읽으면:

  • CLion 설치부터 툴체인·CMake 설정까지 완전히 구성할 수 있습니다.
  • 고급 디버깅 기법(조건부 BP, 역디버깅 등)을 활용할 수 있습니다.
  • 리팩토링·단축키로 생산성을 높일 수 있습니다.
  • 자주 발생하는 에러와 해결법을 알 수 있습니다.
  • 프로덕션 환경에서의 패턴을 적용할 수 있습니다.

실무 적용 경험: 이 글은 대규모 C++ 프로젝트에서 실제로 겪은 문제와 해결 과정을 바탕으로 작성되었습니다. 책이나 문서에서 다루지 않는 실전 함정과 디버깅 팁을 포함합니다.

목차

  1. 문제 시나리오와 CLion 선택
  2. CLion 완전 설치·설정 가이드
  3. CMake 프로젝트 구성
  4. 고급 디버깅
  5. 리팩토링 도구
  6. 생산성 단축키·팁
  7. 자주 발생하는 문제
  8. 프로덕션 패턴
  9. 체크리스트

1. 문제 시나리오와 CLion 선택

언제 CLion을 쓰면 좋을까?

flowchart TD
    A[C++ 프로젝트] --> B{주요 환경은?}
    B -->|Windows 전용| C[Visual Studio]
    B -->|Linux/macOS/크로스플랫폼| D[CLion]
    B -->|가벼운 편집만| E[VSCode]

    D --> D1[CMake 기반]
    D --> D2[디버깅·리팩토링 중요]
    D --> D3[원격/Docker 개발]

CLion vs 다른 IDE 비교

항목CLionVisual StudioVSCode
플랫폼Win/Mac/LinuxWindows모두
빌드 시스템CMake 중심MSBuild, CMakeCMake 등 확장
디버깅GDB/LLDBMSVC 디버거확장 의존
리팩토링내장 강력내장제한적
인덱싱전체 코드베이스빠름확장 의존
가격유료(학생 무료)Community 무료무료

2. CLion 완전 설치·설정 가이드

2.1 설치

macOS:

# Homebrew로 설치
brew install --cask clion

Linux (Ubuntu/Debian):

# JetBrains Toolbox 또는 직접 다운로드
# https://www.jetbrains.com/clion/download/
sudo snap install clion --classic

Windows:

- https://www.jetbrains.com/clion/download/ 에서 설치 프로그램 다운로드
- MinGW-w64 또는 Visual Studio Build Tools 사전 설치 권장

2.2 툴체인(Toolchain) 설정

CLion은 툴체인으로 컴파일러·디버거·CMake를 묶어 관리합니다.

설정 경로: Settings (macOS: Cmd+,) → Build, Execution, DeploymentToolchains

flowchart LR
    subgraph Toolchain[툴체인 구성]
        T1[CMake]
        T2[C/C++ 컴파일러]
        T3[디버거 GDB/LLDB]
        T4[빌드 도구 make/ninja]
    end

macOS - System 툴체인:

1. Toolchains → + → System
2. Name: macOS (Clang)
3. C Compiler: /usr/bin/clang (또는 Xcode 경로)
4. C++ Compiler: /usr/bin/clang++
5. Debugger: LLDB (기본)
6. Environment: 기본 또는 Custom

Linux - GCC 툴체인:

# GCC 설치 확인
gcc --version
g++ --version

# Ubuntu/Debian
sudo apt install build-essential cmake gdb
1. Toolchains → + → System
2. C Compiler: /usr/bin/gcc
3. C++ Compiler: /usr/bin/g++
4. Debugger: GDB

Windows - MinGW:

1. MinGW-w64 또는 MSYS2 설치
2. Toolchains → + → MinGW
3. Environment: MinGW 설치 경로 지정 (예: C:\msys64\mingw64)
4. 또는 Visual Studio 툴체인 선택

CMake 옵션 예시 (툴체인별):

// CMakePresets.json - 툴체인 자동 감지
{
  "version": 3,
  "configurePresets": [
    {
      "name": "linux-debug",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build/debug",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_CXX_COMPILER": "/usr/bin/g++"
      }
    }
  ]
}

2.3 CMake 프로파일 설정

설정 경로: SettingsBuild, Execution, DeploymentCMake

항목설명권장값
Build typeDebug / Release / RelWithDebInfo개발: Debug
Toolchain사용할 툴체인시스템에 맞게
CMake options추가 옵션-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
Build directory빌드 출력 경로cmake-build-debug

디버그·릴리즈 프로파일 분리:

1. CMake → Profiles → + 로 새 프로파일 추가
2. Debug: Build type = Debug, 이름 = Debug
3. Release: Build type = Release, 이름 = Release
4. 실행 시 상단 드롭다운에서 프로파일 선택

2.4 코드 스타일·Clang-Tidy

Clang-Tidy 연동 (정적 분석):

# .clang-tidy - 프로젝트 루트에 생성
Checks: >
  -*,
  bugprone-*,
  performance-*,
  modernize-*,
  readability-*
WarningsAsErrors: ''
HeaderFilterRegex: '.*'

설정: SettingsEditorInspectionsC/C++Clang-Tidy 체크

2.5 원격·Docker 툴체인 (선택)

SSH 원격 개발:

1. Toolchains → + → Remote Host
2. SSH Configuration: 호스트, 사용자, 키 경로
3. 원격 머신에 CMake, GCC/Clang, GDB 설치 필요
4. 빌드·실행이 원격에서 수행됨

Docker 툴체인:

1. Toolchains → + → Docker
2. Docker 이미지 선택 (예: ubuntu:22.04)
3. 이미지 내부에 build-essential, cmake, gdb 설치된 Dockerfile 사용 권장

Dockerfile 예시:

# Dockerfile.dev
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y \
    build-essential cmake gdb git \
    && rm -rf /var/lib/apt/lists/*

3. CMake 프로젝트 구성

3.1 새 프로젝트 생성

FileNew ProjectC++ Executable (또는 Library)

생성되는 기본 구조:

# CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(my_project CXX)

set(CMAKE_CXX_STANDARD 17)

add_executable(my_project main.cpp)

3.2 기존 CMake 프로젝트 열기

FileOpen → 프로젝트 루트의 CMakeLists.txt 또는 폴더 선택

CLion이 자동으로:

  • CMake 설정 실행
  • 컴파일 데이터베이스 생성
  • 코드 인덱싱 시작

3.3 vcpkg·Conan 연동

vcpkg:

# CMakeLists.txt
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
    CACHE STRING "Vcpkg toolchain file")

find_package(nlohmann_json CONFIG REQUIRED)
target_link_libraries(my_project PRIVATE nlohmann_json::nlohmann_json)

CLion에서 vcpkg 툴체인 사용 시 CMAKE_TOOLCHAIN_FILE을 툴체인 환경 변수로 설정.

Conan:

# conanfile.txt
[requires]
nlohmann_json/3.11.2

[generators]
CMakeDeps
CMakeToolchain
# CMakeLists.txt
find_package(nlohmann_json REQUIRED)
target_link_libraries(my_project PRIVATE nlohmann_json::nlohmann_json)

3.4 CMake Presets 활용

// CMakePresets.json
{
  "version": 3,
  "configurePresets": [
    {
      "name": "default",
      "hidden": true,
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build/${presetName}",
      "cacheVariables": {
        "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
      }
    },
    {
      "name": "debug",
      "inherits": "default",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug"
      }
    },
    {
      "name": "release",
      "inherits": "default",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release"
      }
    }
  ]
}

CLion은 CMakePresets.json을 자동 감지해 프로파일로 가져옵니다.


4. 고급 디버깅

4.1 기본 디버깅

실행: Shift+F10 (Run), Shift+F9 (Debug)

브레이크포인트: 줄 번호 왼쪽 클릭 또는 Ctrl+F8 (Win/Linux) / Cmd+F8 (Mac)

디버깅 예제 코드:

// debug_demo.cpp
#include <iostream>
#include <vector>

int computeSum(const std::vector<int>& data) {
    int sum = 0;
    for (size_t i = 0; i < data.size(); ++i) {
        sum += data[i];  // 브레이크포인트: i, sum 관찰
    }
    return sum;
}

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    int result = computeSum(vec);
    std::cout << "Sum: " << result << "\n";
    return 0;
}

4.2 조건부 브레이크포인트

사용법: 브레이크포인트 우클릭 → Edit Breakpoint → Condition 입력

예: i == 3          → i가 3일 때만 멈춤
예: ptr == nullptr  → 널 포인터일 때만
예: data.size() > 1000  → 큰 입력에서만

4.3 Watches·Evaluate Expression

Watches: 디버깅 중 변수 추가 관찰

Watches 창에 입력:
- vec.size()
- vec.data()
- *ptr (포인터 역참조)

Evaluate Expression (Alt+F8): 실행 중 임의 식 계산

// 디버깅 중 Evaluate에서 실행 가능
vec.size()
std::accumulate(vec.begin(), vec.end(), 0)

4.4 역디버깅 (Reverse Debugging)

GDB 7.0+ / LLDB에서 실행을 역방향으로 되돌리며 디버깅할 수 있습니다.

활성화: SettingsBuild, Execution, DeploymentDebuggerEnable reverse debugging

제한: 기록 모드로 실행해 오버헤드가 큼. 필요한 구간만 사용 권장.

4.5 디버깅 워크플로

flowchart TD
    A[버그 재현] --> B[재현 가능한 최소 코드 작성]
    B --> C[의심 구간에 브레이크포인트]
    C --> D[Debug 실행]
    D --> E[Step Over/Into로 흐름 추적]
    E --> F[Watches로 변수 확인]
    F --> G{원인 파악?}
    G -->|아니오| C
    G -->|예| H[수정 후 재검증]

4.6 데이터 브레이크포인트

메모리 주소·변수 값 변경 시 멈추는 브레이크포인트.

1. Run → View Breakpoints (Ctrl+Shift+F8)
2. + → C++ Data Breakpoint
3. 예: &buffer — buffer 주소의 메모리가 변경될 때
4. 예: ptr — ptr가 가리키는 값이 변경될 때

사용 사례: 버퍼 오버플로우, 잘못된 포인터 수정, 레이스 컨디션 의심 시.

4.7 로그포인트 (Logpoint)

브레이크 없이 로그만 출력. 성능 영향 최소.

1. 브레이크포인트 우클릭 → Edit Breakpoint
2. "Log message to console" 체크
3. 예: "i={i}, sum={sum}"
4. 실행 시 콘솔에 로그만 출력되고 멈추지 않음

5. 리팩토링 도구

5.1 Rename (이름 변경)

단축키: Shift+F6

변수·함수·클래스·파일 이름을 바꾸면 모든 참조가 자동으로 변경됩니다.

// Before: computeSum → computeTotal 로 변경
int computeSum(const std::vector<int>& data) {
    // ...
}

// Refactor → Rename (Shift+F6) → computeTotal
// 모든 호출부가 computeTotal로 변경됨

5.2 Extract (추출)

Extract Function: Ctrl+Alt+M (Win/Linux) / Cmd+Alt+M (Mac)

선택한 코드 블록을 새 함수로 추출합니다.

// Before
void process() {
    std::vector<int> data = loadData();
    int sum = 0;
    for (int x : data) sum += x;
    std::cout << "Sum: " << sum << "\n";
}

// 블록 선택 후 Extract Function → 이름: printSum
// After
void printSum(const std::vector<int>& data) {
    int sum = 0;
    for (int x : data) sum += x;
    std::cout << "Sum: " << sum << "\n";
}
void process() {
    std::vector<int> data = loadData();
    printSum(data);
}

Extract Variable: Ctrl+Alt+V / Cmd+Alt+V

Extract Parameter: Ctrl+Alt+P / Cmd+Alt+P

5.3 Change Signature

함수 시그니처 변경 시 호출부를 자동 업데이트합니다.

RefactorChange Signature (Ctrl+F6 / Cmd+F6)

  • 매개변수 추가·삭제·순서 변경
  • 기본값 설정
  • 반환 타입 변경

5.4 Inline

함수 본문을 호출부에 인라인하고 함수 정의를 제거합니다.

RefactorInline (Ctrl+Alt+N / Cmd+Alt+N)


6. 생산성 단축키·팁

6.1 필수 단축키 (macOS: Cmd → Ctrl)

동작Win/LinuxmacOS
검색 전체Shift+ShiftShift+Shift
파일 검색Ctrl+Shift+NCmd+Shift+O
심볼 검색Ctrl+Alt+Shift+NCmd+Alt+O
정의로 이동Ctrl+BCmd+B
구현으로 이동Ctrl+Alt+BCmd+Alt+B
사용처 찾기Alt+F7Alt+F7
호출 계층Ctrl+Alt+HCtrl+Alt+H
리팩토링 메뉴Ctrl+Shift+Alt+TCtrl+T
최근 파일Ctrl+ECmd+E
에디터 분할`Shift+Alt+좌/우Cmd+\

6.2 코드 생성

Live Template:

1. Settings → Editor → Live Templates
2. C++ → + → Live Template
3. Abbreviation: fori (for loop with index)
4. Template text:
   for (size_t $INDEX$ = 0; $INDEX$ < $CONTAINER$.size(); ++$INDEX$) {
       $END$
   }
5. Variables: INDEX=index, CONTAINER=container

기본 제공: mainint main() 생성, for → 범위 for 루프 등

6.3 다중 커서·선택

  • 다중 선택: Alt+J (다음 일치), Alt+Shift+J (모든 일치)
  • 컬럼 선택: Alt+Shift+드래그 (블록 선택)
  • 라인 복제: Ctrl+D / Cmd+D

6.4 구조 보기

  • File Structure: Ctrl+F12 / Cmd+F12 — 현재 파일의 함수·클래스 목록
  • Structure 창: 사이드바에서 클래스·함수 트리
  • Hierarchy: Ctrl+H — 클래스 상속 계층

6.5 TODO·FIXME

// TODO: 최적화 필요
// FIXME: 경계 조건 확인

ViewTool WindowsTODO — 프로젝트 전체 TODO/FIXME 목록

6.6 로컬 히스토리

VCS 없이 파일 변경 이력을 로컬에 저장합니다.

FileLocal HistoryShow History — 이전 버전 복원 가능

6.7 북마크·핀

  • 북마크: F3 — 현재 위치 북마크, Ctrl+F3 — 이름 붙인 북마크
  • : 에디터 탭 우클릭 → Pin Tab — 자주 쓰는 파일 고정

6.8 스크래치 파일

임시 코드를 프로젝트 외부에 저장.

FileNewScratch FileC++ 선택 — *.cpp 임시 파일 생성, 프로젝트 빌드에 포함되지 않음.

6.9 Compare with Clipboard / Branch

  • Clipboard와 비교: Ctrl+Shift+V — 클립보드 내용과 현재 파일 diff
  • Git Branch 비교: GitCompare with Branch — 다른 브랜치와 diff

6.10 Postfix 완성

코드 입력 후 점(.)과 키워드로 변환.

// 예: vec.for → 범위 for 루프로 변환
std::vector<int> vec = {1, 2, 3};
vec.for  // Tab → for (auto&& x : vec) { }
자주 쓰는 것: .for, .if, .null, .not, .cast

7. 자주 발생하는 문제

문제 1: “No toolchain found” / “툴체인을 찾을 수 없음”

원인: 시스템에 C++ 컴파일러가 없거나, CLion이 경로를 찾지 못함.

해결:

# macOS: Xcode Command Line Tools 설치
xcode-select --install

# Ubuntu/Debian
sudo apt install build-essential cmake gdb

# 경로 확인
which g++
which clang++

CLion: SettingsToolchains+System → 컴파일러 경로 수동 지정


문제 2: “CMake project is not loaded” / CMake 설정 실패

원인: CMakeLists.txt 문법 오류, 의존성 누락, 툴체인 불일치.

해결:

  1. CMakeLists.txt 문법 확인:
# 흔한 실수: 괄호 불일치
add_executable(my_app
    main.cpp
    # 닫는 괄호 누락
  1. CMake 로그 확인: ViewTool WindowsCMake — 에러 메시지 확인

  2. 캐시 삭제 후 재설정:

rm -rf cmake-build-* build
# CLion에서 File → Reload CMake Project

문제 3: 디버거에서 브레이크포인트가 안 걸림 (회색)

원인: Release 빌드로 실행 중이거나, 최적화로 인해 라인이 생략됨.

해결:

  1. Debug 프로파일로 빌드·실행 확인
  2. CMake 옵션에 디버그 정보 추가:
# CMakeLists.txt - Debug에서만
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0")
endif()
  1. 최적화 비활성화: -O0 사용

문제 4: “Cannot find -lxxx” (링커 에러)

원인: 라이브러리 경로 또는 링크 대상이 잘못됨.

해결:

# 올바른 find_package 및 target_link_libraries
find_package(OpenSSL REQUIRED)
target_link_libraries(my_app PRIVATE OpenSSL::SSL OpenSSL::Crypto)

# vcpkg 사용 시
set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
find_package(OpenSSL CONFIG REQUIRED)

문제 5: 인덱싱이 너무 느림 / CPU 100%

원인: 대규모 프로젝트, 외부 라이브러리 포함, 빌드 디렉터리 인덱싱.

해결:

  1. 제외 경로 설정: SettingsBuild, Execution, DeploymentCMakeExclude from projectbuild, cmake-build-*, third_party 등 추가

  2. 인덱싱 제외: SettingsProjectDirectories → 폴더 우클릭 → Mark asExcluded

  3. 메모리 할당 증가: HelpEdit Custom VM Options-Xmx4096m (4GB 등)


문제 6: “undefined reference” — 헤더만 있고 구현 없음

원인: 선언만 있고 정의가 없거나, 링크 대상에 소스 파일 미포함.

해결:

# 모든 소스 파일 포함
add_executable(my_app
    main.cpp
    utils.cpp
    parser.cpp
)
# utils.cpp에 Utils::parse() 구현이 있어야 함

문제 7: Docker/원격 툴체인 연결 실패

원인: SSH 키, 경로, 권한 문제.

해결:

  1. SSH 연결 테스트: 터미널에서 ssh user@host 수동 확인
  2. 원격 컴파일러 경로: /usr/bin/g++ 등 표준 경로 사용
  3. 디버거: 원격에 GDB/LLDB 설치 확인

문제 8: 한글 경로·파일명에서 빌드 실패

원인: 일부 툴체인·CMake가 비ASCII 경로를 제대로 처리하지 못함.

해결: 프로젝트 경로를 영문만 사용 (예: C:\dev\my_project)


문제 9: “Symbol not found” / 헤더는 있는데 정의 못 찾음

원인: compile_commands.json 미생성, 인덱싱 미완료, 잘못된 include 경로.

해결:

# CMakeLists.txt
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# 빌드 후 compile_commands.json 생성됨
# 수동 생성 (CLion 외부에서)
cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
# build/compile_commands.json 확인

문제 10: Run Configuration이 저장 안 됨

원인: “Share” 체크 안 함 → 로컬에만 저장.

해결: Edit Configurations → 해당 설정 → 우측 상단 “Share” 체크 → .idea/runConfigurations/에 XML로 저장되어 팀과 공유 가능.


8. 프로덕션 패턴

8.1 팀 공통 설정

EditorConfig로 포맷 통일:

# .editorconfig
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.{cpp,h,hpp}]
indent_size = 4

공유 Run Configuration:

1. Run → Edit Configurations
2. + → CMake Application
3. 타겟, 실행 인자, 환경 변수 설정
4. "Share" 체크 → .idea/runConfigurations/ 에 저장
5. 팀원이 동일 설정 사용

8.2 CI와 동일한 빌드

CLion에서 사용하는 CMake 옵션을 CI 스크립트와 맞춥니다.

# .github/workflows/build.yml 예시
- name: Configure
  run: |
    cmake -B build -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_CXX_COMPILER=g++-12
- name: Build
  run: cmake --build build
CLion CMake options에 동일한 -D 옵션 추가

8.3 프로파일별 설정

프로파일용도CMAKE_BUILD_TYPE
Debug개발·디버깅Debug
Release성능 측정·배포Release
RelWithDebInfo프로파일링·최적화 디버깅RelWithDebInfo

8.4 대규모 프로젝트

flowchart TD
    A[대규모 코드베이스] --> B[CMake Presets로 프로파일 분리]
    B --> C[제외 경로 설정]
    C --> D[인덱싱 최적화]
    D --> E[모듈별 Run Configuration]
  • Compilation Database: -DCMAKE_EXPORT_COMPILE_COMMANDS=ON — Clangd 등과 공유
  • 모듈화: 서브디렉터리별 add_subdirectory, 필요한 타겟만 빌드

8.5 코드 품질 게이트

# .clang-tidy - CI와 동일 규칙
Checks: >
  bugprone-*,
  performance-*,
  modernize-*,
  readability-*
WarningsAsErrors: 'bugprone-*,performance-*'

CLion에서 저장 시 또는 커밋 전에 Clang-Tidy 경고를 0으로 유지하는 습관.


9. 체크리스트

설치·설정

  • CLion 설치 (JetBrains Toolbox 또는 직접)
  • 툴체인 설정 (GCC/Clang/MSVC)
  • CMake 프로파일 구성 (Debug/Release)
  • CMAKE_EXPORT_COMPILE_COMMANDS=ON 설정
  • Clang-Tidy 연동 (선택)

디버깅

  • Debug 프로파일로 빌드·실행
  • 브레이크포인트·조건부 BP 활용
  • Watches·Evaluate Expression 사용
  • 역디버깅 필요 시 활성화

리팩토링

  • Rename (Shift+F6) — 이름 변경
  • Extract Function/Variable
  • Change Signature
  • Find Usages로 영향 범위 확인

생산성

  • 필수 단축키 숙지 (검색, 정의로 이동, 사용처 찾기)
  • Live Template 커스터마이즈
  • TODO 창 활용
  • 로컬 히스토리 복원

프로덕션

  • EditorConfig 공유
  • Run Configuration 공유
  • CI와 동일한 CMake 옵션
  • 제외 경로로 인덱싱 최적화

정리

항목핵심
설정툴체인·CMake 프로파일·Debug/Release 분리
디버깅조건부 BP, Watches, Evaluate, 역디버깅
리팩토링Rename, Extract, Change Signature
생산성검색, 정의 이동, 단축키, Live Template
에러툴체인·CMake·디버그 심볼·링커·인덱싱
프로덕션EditorConfig, Run Config 공유, CI 일치

핵심 원칙:

  1. Debug로 디버깅 — Release에서는 브레이크포인트가 제대로 동작하지 않을 수 있음
  2. 리팩토링은 도구에 맡기기 — 수동 변경은 누락 위험
  3. 제외 경로 설정 — 빌드 산출물·서브모듈은 인덱싱에서 제외
  4. 팀 설정 공유 — Run Config, EditorConfig로 환경 통일

자주 묻는 질문 (FAQ)

Q. 이 내용을 실무에서 언제 쓰나요?

A. C++ 크로스 플랫폼 개발, 대규모 코드베이스 탐색, 리팩토링 작업, 원격/도커 개발 등에 활용합니다. CLion은 CMake 기반 프로젝트에 최적화되어 있어, vcpkg·Conan과 함께 사용하면 의존성 관리도 편합니다.

Q. 선행으로 읽으면 좋은 글은?

A. CMake 입문에서 CMake 기본을, GDB/LLDB 디버거에서 디버깅 개념을 먼저 익히면 좋습니다. VSCode C++ 설정과 비교해 보면 IDE 선택에 도움이 됩니다.

Q. 더 깊이 공부하려면?

A. CLion 공식 문서, CMake 문서, cppreference를 참고하세요. JetBrains 블로그의 C++ 관련 포스트도 유용합니다.


참고 자료

한 줄 요약: CLion으로 CMake 설정부터 디버깅·리팩토링·생산성까지, 크로스 플랫폼 C++ 개발을 체계적으로 진행할 수 있습니다.


관련 글

  • C++ CLion 완벽 가이드 | 디버깅·리팩토링·단축키 [#53-1]
  • C++ CLion 완벽 설정 가이드 | CMake·디버거·코드 분석·vcpkg·원격 개발 [#53-1]
  • VS Code C++ 설정 | IntelliSense·빌드·디버깅
  • C++ 디버깅 기초 완벽 가이드 | GDB·LLDB 브레이크포인트·워치포인트로 버그 5분 만에 찾기
  • CMake 입문 | 수십 개 파일 컴파일할 때 필요한 빌드 자동화 (CMakeLists.txt 기초)
... 996 lines not shown ... Token usage: 63706/1000000; 936294 remaining Start-Sleep -Seconds 3