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 Project | File → New → Project |
| 레거시 Makefile | Compilation Database | Bear, compiledb |
| 멀티 플랫폼 | CMake Presets | CMakePresets.json |
| 대규모 인덱싱 | 제외 경로 | Settings → Directories |
| vcpkg | CMAKE_TOOLCHAIN_FILE | 환경 변수 |
| 원격 개발 | Remote Host / Docker | Toolchains |
flowchart TB
subgraph 문제[실무 문제]
P1[툴체인 없음] --> S1[System 툴체인 설정]
P2[디버깅 안 됨] --> S2[Debug 프로필]
P3[vcpkg 인식 못 함] --> S3[Toolchain 경로]
P4[인덱싱 느림] --> S4[제외 경로]
P5[원격 빌드] --> S5[SSH/Docker]
end
목차
- CLion 설치 및 툴체인 설정
- CMake 프로젝트 완전 구성
- 디버거 설정 및 고급 기법
- 코드 분석 Clang-Tidy 연동
- vcpkg 연동
- 원격 개발 설정
- 자주 발생하는 에러와 해결법
- 베스트 프랙티스
- 프로덕션 패턴
- 구현 체크리스트
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, Deployment → Toolchains
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 새 프로젝트 생성
File → New Project → C++ 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 프로파일 설정
설정 경로: Settings → Build, Execution, Deployment → CMake
| 항목 | 설명 | 권장값 |
|---|---|---|
| Build type | Debug / 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에서 실행을 역방향으로 되돌리며 디버깅할 수 있습니다.
활성화: Settings → Build, Execution, Deployment → Debugger → Enable reverse debugging
제한: 기록 모드로 실행해 오버헤드가 큼. 필요한 구간만 사용 권장.
3.7 Run Configuration 구성
Run → Edit Configurations에서:
| 항목 | 예시 값 | 설명 |
|---|---|---|
| Name | main (Debug) | 구성 이름 |
| Target | my_project | CMake 타겟 |
| Program arguments | --config dev.json -v | 명령줄 인자 |
| Environment variables | LOG_LEVEL=debug;DB_PATH=./data | 환경 변수 (세미콜론 구분) |
| Working directory | $ProjectFileDir$/runtime | 작업 디렉토리 |
Share 체크 시 .idea/runConfigurations/에 XML로 저장되어 팀과 공유 가능.
4. 코드 분석 Clang-Tidy 연동
4.1 Clang-Tidy 설정
설정: Settings → Editor → Inspections → C/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을 터미널에서 실행하면 환경 변수 상속됨. 또는 Help → Edit 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: Settings → Toolchains → + → System → 컴파일러 경로 수동 지정
문제 2: “CMake project is not loaded” / CMake 설정 실패
원인: CMakeLists.txt 문법 오류, 의존성 누락, 툴체인 불일치.
해결:
-
CMakeLists.txt 문법 확인:
# 흔한 실수: 괄호 불일치 add_executable(my_app main.cpp ) # 닫는 괄호 누락 시 에러 -
CMake 로그 확인:
View→Tool Windows→CMake— 에러 메시지 확인 -
캐시 삭제 후 재설정:
rm -rf cmake-build-* build
# CLion에서 File → Reload CMake Project
문제 3: 디버거에서 브레이크포인트가 안 걸림 (회색)
원인: Release 빌드로 실행 중이거나, 최적화로 인해 라인이 생략됨.
해결:
-
Debug 프로파일로 빌드·실행 확인
-
CMake 옵션에 디버그 정보 추가:
# CMakeLists.txt - Debug에서만 if(CMAKE_BUILD_TYPE STREQUAL "Debug") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0") endif() -
최적화 비활성화:
-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%
원인: 대규모 프로젝트, 외부 라이브러리 포함, 빌드 디렉터리 인덱싱.
해결:
-
제외 경로 설정:
Settings→Build, Execution, Deployment→CMake→Exclude from project에build,cmake-build-*,third_party등 추가 -
인덱싱 제외:
Settings→Project→Directories→ 폴더 우클릭 →Mark as→Excluded -
메모리 할당 증가:
Help→Edit 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 키, 경로, 권한 문제.
해결:
- SSH 연결 테스트: 터미널에서
ssh user@host수동 확인 - 원격 컴파일러 경로:
/usr/bin/g++등 표준 경로 사용 - 디버거: 원격에 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/Linux | macOS |
|---|---|---|
| 검색 전체 | Shift+Shift | Shift+Shift |
| 정의로 이동 | Ctrl+B | Cmd+B |
| 사용처 찾기 | Alt+F7 | Alt+F7 |
| Rename | Shift+F6 | Shift+F6 |
| Evaluate | Alt+F8 | Alt+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 분리 |
| CMake | Presets, compile_commands, 모듈화 |
| 디버깅 | 조건부 BP, Watches, Evaluate, 역디버깅 |
| 코드 분석 | Clang-Tidy, .clang-tidy |
| vcpkg | CMAKE_TOOLCHAIN_FILE, 환경 변수 |
| 원격 | SSH/Docker 툴체인 |
| 에러 | 툴체인·CMake·디버그 심볼·링커·인덱싱 |
| 프로덕션 | EditorConfig, Run Config 공유, CI 일치 |
핵심 원칙:
- Debug로 디버깅 — Release에서는 브레이크포인트가 제대로 동작하지 않을 수 있음
- 리팩토링은 도구에 맡기기 — 수동 변경은 누락 위험
- 제외 경로 설정 — 빌드 산출물·서브모듈은 인덱싱에서 제외
- 팀 설정 공유 — 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]