C++ CLion 완벽 설정 가이드 | CMake·디버거·코드 분석·vcpkg·원격 개발 [#53-1]

C++ CLion 완벽 설정 가이드 | CMake·디버거·코드 분석·vcpkg·원격 개발 [#53-1]

이 글의 핵심

C++ CLion IDE 완벽 설정 가이드입니다. CMake 설정, 디버거 연결, 코드 분석 도구, vcpkg 통합, 원격 개발 환경 구축 방법을 단계별로 설명합니다.

들어가며: “CLion 설정이 안 돼요”

문제 시나리오

"CMake 프로젝트를 열었는데 '툴체인을 찾을 수 없음' 에러가 나요"
"디버거로 실행했는데 브레이크포인트가 회색으로 안 걸려요"
"vcpkg로 설치한 nlohmann_json을 CLion이 못 찾아요"
"10만 줄 코드베이스에서 인덱싱이 10분 넘게 걸려요"
"리팩토링할 때 변수명 바꾸면 수동으로 다 찾아서 고쳐야 해요"
"Docker 컨테이너 안에서 빌드·실행해야 하는데 설정이 복잡해요"
"Clang-Tidy 경고를 IDE에서 바로 보고 싶어요"
"undefined reference 에러가 나는데 헤더는 잘 찾아요"

이 글은 CLion 완전 설정 가이드입니다. CMake 구성, 디버거, 코드 분석(Clang-Tidy), vcpkg 연동, 원격 개발까지 실전 예제와 함께 다룹니다. 실무 문제 시나리오, 자주 발생하는 에러, 베스트 프랙티스, 프로덕션 패턴까지 900줄 분량으로 정리합니다.

이 글을 읽으면:

  • CLion 설치부터 툴체인·CMake 설정까지 완전히 구성할 수 있습니다.
  • 고급 디버깅 기법(조건부 BP, 역디버깅, 데이터 BP)을 활용할 수 있습니다.
  • vcpkg·Conan 연동으로 의존성을 관리할 수 있습니다.
  • Clang-Tidy 코드 분석을 IDE에 통합할 수 있습니다.
  • 원격·Docker 개발 환경을 구성할 수 있습니다.
  • 자주 발생하는 에러와 해결법을 알 수 있습니다.

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


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

문제 시나리오 상세

시나리오 1: 신규 프로젝트 — CMake 없이 시작

상황: C++ 프로젝트를 새로 시작하려는데 CMakeLists.txt 없음
문제: CLion은 CMake 기반이라 빌드 시스템이 필요함
결과: New Project → C++ Executable으로 자동 CMake 생성

시나리오 2: 레거시 Makefile 프로젝트

상황: Makefile만 있고 CMakeLists.txt 없음
문제: CLion은 CMake 기반이라 직접 지원 안 함
결과: CMake로 변환하거나, Compilation Database 생성 후 열기

시나리오 3: 멀티 플랫폼 빌드

상황: Win/Mac/Linux 각각 빌드해야 함
문제: 툴체인·경로가 OS마다 다름
결과: CMake Presets로 프로파일 분리, 툴체인 전환

시나리오 4: 대규모 프로젝트 인덱싱

상황: 10만 줄 이상 코드베이스에서 인덱싱 10분 이상
문제: CPU 100%, 다른 작업 불가
결과: build, third_party 제외, 메모리 증가 설정

시나리오 5: vcpkg 의존성 관리

상황: nlohmann_json, spdlog 등 vcpkg로 설치
문제: CLion이 CMAKE_TOOLCHAIN_FILE을 인식 못 함
결과: 툴체인 환경 변수 또는 CMake 옵션에 toolchain 파일 지정

시나리오 6: 원격/Docker 개발

상황: Linux 서버에서만 재현되는 버그, 팀원과 동일 빌드 환경 필요
문제: 로컬에서 빌드·실행하면 환경 차이로 문제 발생
결과: SSH 원격 툴체인 또는 Docker 툴체인 사용

시나리오별 기술 선택

시나리오CLion 기능설정 위치
신규 프로젝트New ProjectFile → New → Project
레거시 MakefileCompilation DatabaseBear, compiledb
멀티 플랫폼CMake PresetsCMakePresets.json
대규모 인덱싱제외 경로Settings → Directories
vcpkgCMAKE_TOOLCHAIN_FILE환경 변수
원격 개발Remote Host / DockerToolchains
flowchart TB
    subgraph 문제[실무 문제]
        P1[툴체인 없음] --> S1[System 툴체인 설정]
        P2[디버깅 안 됨] --> S2[Debug 프로필]
        P3[vcpkg 인식 못 함] --> S3[Toolchain 경로]
        P4[인덱싱 느림] --> S4[제외 경로]
        P5[원격 빌드] --> S5[SSH/Docker]
    end

목차

  1. CLion 설치 및 툴체인 설정
  2. CMake 프로젝트 완전 구성
  3. 디버거 설정 및 고급 기법
  4. 코드 분석 Clang-Tidy 연동
  5. vcpkg 연동
  6. 원격 개발 설정
  7. 자주 발생하는 에러와 해결법
  8. 베스트 프랙티스
  9. 프로덕션 패턴
  10. 구현 체크리스트

1. CLion 설치 및 툴체인 설정

1.1 설치

macOS:

# Homebrew로 설치
brew install --cask clion

Linux (Ubuntu/Debian):

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

Windows:

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

1.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 툴체인 선택

2. CMake 프로젝트 완전 구성

2.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)

2.2 완전한 CMake 설정 예제

프로젝트 구조:

myapp/
├── CMakeLists.txt
├── CMakePresets.json
├── include/
│   └── utils.h
├── src/
│   ├── main.cpp
│   └── utils.cpp
└── tests/
    └── test_main.cpp

CMakeLists.txt:

cmake_minimum_required(VERSION 3.16)
project(my_project CXX)

# C++ 표준
set(CMAKE_CXX_STANDARD 17)

# Compilation Database 생성 (Clangd, IDE 인덱싱용)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# 디버그 심볼 (Debug 모드)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0")
endif()

# 라이브러리
add_library(utils STATIC src/utils.cpp)
target_include_directories(utils PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

# 실행 파일
add_executable(my_project src/main.cpp)
target_link_libraries(my_project PRIVATE utils)

# 테스트 (선택)
enable_testing()
add_executable(test_runner tests/test_main.cpp)
target_link_libraries(test_runner PRIVATE utils)
add_test(NAME test_runner COMMAND test_runner)

2.3 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을 자동 감지해 프로파일로 가져옵니다.

2.4 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. 실행 시 상단 드롭다운에서 프로파일 선택

3. 디버거 설정 및 고급 기법

3.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;
}

3.2 조건부 브레이크포인트

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

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

3.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)

3.4 데이터 브레이크포인트

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

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

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

3.5 로그포인트 (Logpoint)

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

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

3.6 역디버깅 (Reverse Debugging)

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

활성화: SettingsBuild, Execution, DeploymentDebuggerEnable reverse debugging

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

3.7 Run Configuration 구성

RunEdit Configurations에서:

항목예시 값설명
Namemain (Debug)구성 이름
Targetmy_projectCMake 타겟
Program arguments--config dev.json -v명령줄 인자
Environment variablesLOG_LEVEL=debug;DB_PATH=./data환경 변수 (세미콜론 구분)
Working directory$ProjectFileDir$/runtime작업 디렉토리

Share 체크 시 .idea/runConfigurations/에 XML로 저장되어 팀과 공유 가능.


4. 코드 분석 Clang-Tidy 연동

4.1 Clang-Tidy 설정

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

4.2 .clang-tidy 프로젝트 설정

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

4.3 프로덕션용 엄격 설정

# .clang-tidy - 프로덕션
Checks: >
  -*,
  bugprone-*,
  performance-*,
  modernize-*,
  readability-*
WarningsAsErrors: 'bugprone-*,performance-*'
HeaderFilterRegex: '.*'

CI와 동일 규칙을 유지하면 로컬에서 먼저 경고를 잡을 수 있습니다.


5. vcpkg 연동

5.1 vcpkg 설치

# vcpkg 클론
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh  # Linux/macOS
# bootstrap-vcpkg.bat  # Windows

# 환경 변수 설정 (선택)
export VCPKG_ROOT=/path/to/vcpkg

5.2 패키지 설치

# nlohmann_json, spdlog 설치
./vcpkg install nlohmann-json spdlog

5.3 CMakeLists.txt 연동

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

find_package(nlohmann_json CONFIG REQUIRED)
find_package(spdlog CONFIG REQUIRED)

add_executable(my_project src/main.cpp)
target_link_libraries(my_project PRIVATE
    nlohmann_json::nlohmann_json
    spdlog::spdlog
)

5.4 CLion에서 vcpkg 사용

방법 1: 환경 변수

# ~/.zshrc 또는 ~/.bashrc
export VCPKG_ROOT=/path/to/vcpkg

CLion을 터미널에서 실행하면 환경 변수 상속됨. 또는 HelpEdit Custom VM Options에서 사용하지 않음.

방법 2: CMake 옵션

Settings → CMake → CMake options에 추가:
-DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake

방법 3: 툴체인 Environment

Settings → Toolchains → 해당 툴체인 → Environment
VCPKG_ROOT = /path/to/vcpkg

5.5 완전한 vcpkg 예제

# CMakeLists.txt - vcpkg + nlohmann_json + spdlog
cmake_minimum_required(VERSION 3.16)
project(JsonApp CXX)

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

find_package(nlohmann_json CONFIG REQUIRED)
find_package(spdlog CONFIG REQUIRED)

add_executable(json_app src/main.cpp)
target_link_libraries(json_app PRIVATE
    nlohmann_json::nlohmann_json
    spdlog::spdlog
)
// src/main.cpp
#include <nlohmann/json.hpp>
#include <spdlog/spdlog.h>

int main() {
    spdlog::info("Hello from JSON app");
    auto j = nlohmann::json::parse(R"({"key": "value"})");
    spdlog::info("Parsed: {}", j.dump());
    return 0;
}

6. 원격 개발 설정

6.1 SSH 원격 툴체인

설정:

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

원격 서버 준비:

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

6.2 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/*

6.3 원격 디버깅

원격 툴체인 사용 시 디버거는 원격에서 실행됩니다. GDB/LLDB가 원격에 설치되어 있어야 합니다.

원격 GDB: /usr/bin/gdb
원격 LLDB: /usr/bin/lldb (Linux)

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
    )  # 닫는 괄호 누락 시 에러
  2. CMake 로그 확인: ViewTool WindowsCMake — 에러 메시지 확인

  3. 캐시 삭제 후 재설정:

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()
  3. 최적화 비활성화: -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: vcpkg 패키지를 CLion이 못 찾음

원인: CMAKE_TOOLCHAIN_FILE이 CLion CMake 실행 시 전달되지 않음.

해결:

1. Settings → CMake → CMake options에 추가:
   -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
2. 또는 툴체인 Environment에 VCPKG_ROOT 설정
3. 프로젝트 재로드

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

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

해결:

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

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

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


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

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

해결:

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

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

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

해결:

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

문제 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: 한글 경로·파일명에서 빌드 실패

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

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


8. 베스트 프랙티스

8.1 Debug로 디버깅

Release에서는 브레이크포인트가 제대로 동작하지 않을 수 있음. 항상 Debug 프로필로 디버깅.

8.2 리팩토링은 도구에 맡기기

수동 변경은 누락 위험. Rename (Shift+F6), Extract (Ctrl+Alt+M) 등 IDE 도구 사용.

8.3 제외 경로 설정

빌드 산출물·서브모듈은 인덱싱에서 제외해 성능 개선.

8.4 팀 설정 공유

Run Config, EditorConfig로 환경 통일. .idea/runConfigurations/에 XML 저장.

8.5 CMAKE_EXPORT_COMPILE_COMMANDS

Clangd, Clang-Tidy 등과 공유. set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 추가.

8.6 단축키 숙지

동작Win/LinuxmacOS
검색 전체Shift+ShiftShift+Shift
정의로 이동Ctrl+BCmd+B
사용처 찾기Alt+F7Alt+F7
RenameShift+F6Shift+F6
EvaluateAlt+F8Alt+F8

9. 프로덕션 패턴

9.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

9.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

9.3 프로파일별 설정

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

9.4 코드 품질 게이트

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

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

9.5 대규모 프로젝트

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

10. 구현 체크리스트

설치·설정

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

CMake

  • CMakeLists.txt 문법 검증
  • target_include_directories 설정
  • target_link_libraries 설정
  • CMake Presets (선택)

디버깅

  • Debug 프로파일로 빌드·실행
  • 브레이크포인트·조건부 BP 활용
  • Watches·Evaluate Expression 사용
  • Run Configuration Share

vcpkg

  • VCPKG_ROOT 환경 변수
  • CMAKE_TOOLCHAIN_FILE 설정
  • find_package·target_link_libraries

원격 개발

  • SSH 원격 툴체인 (필요 시)
  • Docker 툴체인 (필요 시)
  • 원격 GDB/LLDB 설치 확인

프로덕션

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

정리

항목핵심
설정툴체인·CMake 프로파일·Debug/Release 분리
CMakePresets, compile_commands, 모듈화
디버깅조건부 BP, Watches, Evaluate, 역디버깅
코드 분석Clang-Tidy, .clang-tidy
vcpkgCMAKE_TOOLCHAIN_FILE, 환경 변수
원격SSH/Docker 툴체인
에러툴체인·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 디버거에서 디버깅 개념을 먼저 익히면 좋습니다.

Q. 더 깊이 공부하려면?

A. CLion 공식 문서, CMake 문서, vcpkg 문서를 참고하세요.


참고 자료

한 줄 요약: CLion으로 CMake 설정부터 디버깅·코드 분석·vcpkg·원격 개발까지, 크로스 플랫폼 C++ 개발을 체계적으로 진행할 수 있습니다.


관련 글

  • C++ CLion 완벽 가이드 | 설치·설정·디버깅·리팩토링·생산성 [#53-1]
  • C++ CLion 완벽 가이드 | 디버깅·리팩토링·단축키 [#53-1]
  • CMake 입문 | 수십 개 파일 컴파일할 때 필요한 빌드 자동화 (CMakeLists.txt 기초)
  • C++ vcpkg 기초 완벽 가이드 | 설치·Manifest·Triplet·버전·커스텀 포트 [#53-3]
  • C++ Conan 기초 완벽 가이드 | 설치·conanfile·프로필·CMake 연동 [#53-4]
... 996 lines not shown ... Token usage: 63706/1000000; 936294 remaining Start-Sleep -Seconds 3