
일관된 C/C++ 빌드 세팅을 유지하는 것이 가장 중요합니다.
이번 포스팅에서는 CMakePresets를 활용한 환경 표준화부터 사이드바 제어를 이용해 VS Code 기반의 CMake 워크플로우 구축 방법을 단계별로 알아보겠습니다.
VS Code에서 CMake를 사용할 때 가장 먼저 해야 할 일은 빌드 환경을 고정하는 것입니다.
CMakePresets.json을 프로젝트 최상위 경로에 작성하면, 팀원 간의 환경 차이나 Windows/Ubuntu 등 운영체제 변환 시에도 동일한 빌드 폴더 구조와 컴파일러 설정을 유지할 수 있습니다.
이 파일은 크게 빌드 환경을 세팅하는 configurePresets와 실제 컴파일 대상을 지정하는 buildPresets 두 부분으로 나뉩니다.
CMake가 빌드 파일(Makefile 등)을 어디에, 어떤 설정으로 생성할지 정의합니다.
VS Code가 기본으로 생성해 주는 더미 템플릿은 삭제하고, 해당 프로젝트에 맞는 구조로 직접 작성합니다.
{
"version": 3,
"configurePresets": [
{
"name": "default-build",
"displayName": "Default Build (Project Root)",
"description": "프로젝트 최상위 루트에 build 폴더를 생성하는 표준 방식",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"BUILD_FIR_TESTS": "ON"
}
},
{
"name": "fir-1d-custom",
"displayName": "1D FIR Filter (Sub-folder Build)",
"description": "FIR 필터 시뮬레이션 관련 빌드 파일만 하위 폴더로 격리",
"binaryDir": "${sourceDir}/fir_1d/sim/build",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"BUILD_FIR_TESTS": "ON"
}
}
],
default-build preset: 프로젝트 최상위 루트에 build 폴더를 만들고 모든 구성 파일을 이곳에 저장하는 가장 표준적인 방식입니다.
fir-1d-custom preset: 특정 하위 모듈(1D FIR 필터)의 시뮬레이션 및 검증만을 위해 독립적인 build 폴더를 구축하는 맞춤형 설정입니다.
전체 프로젝트를 제어하는 default-build와 달리, fir-1d-custom은 빌드 폴더를 fir_1d/sim/build로 깊게 지정하여 다른 모듈의 목적 파일(.o)과 섞이지 않도록 관리합니다.
앞서 만든 configurePreset를 바탕으로, 소스 코드 중 어떤 타겟(Target)을 컴파일할지 구체적인 대상을 지정합니다.
"buildPresets": [
{
"name": "build-all-default",
"configurePreset": "default-build"
},
{
"name": "build-test-fir-1d-default",
"configurePreset": "default-build",
"targets": [
"test_fir_1d"
]
},
{
"name": "build-test-fir-1d-custom",
"configurePreset": "fir-1d-custom",
"targets": [
"test_fir_1d"
]
}
]
}
build-all-default: default-build 프리셋을 사용합니다. 기본 디폴트 설정입니다.
build-test-fir-1d-default: default-build 폴더를 사용하되 targets를 test_fir_1d로 명시합니다. 해당 타겟만 빌드하므로, 컴파일 및 디버깅 속도가 상승합니다.
build-test-fir-1d-custom: fir-1d-custom 프리셋을 사용하여 격리된 빌드 디렉토리를 사용합니다. 마찬가지로 targets 명시를 통해 빠른 빌드와 검증 속도를 확보합니다.
작성한 CMakePresets.json을 VS Code에 실제로 적용하는 단계입니다.
CMake는 구성(Configure)과 빌드(Build)를 철저히 분리하여 관리하므로, 두 단계를 순서대로 진행해야 합니다.
Ctrl + Shift + P를 눌러 명령 팔레트를 열고 CMake: Select Configure Preset을 실행합니다.

이 단계는 "어떤 폴더에서, 어떤 컴파일러로 빌드 환경을 구성할 것인가?"를 결정하는 단계입니다.
환경 구성이 끝났다면 CMake: Select Build Preset을 실행하여 실제 컴파일 대상을 고릅니다.
하나의 구성 항목 중 어떤 종류의 빌드 명령을 수행할지 선택하는 단계입니다. 즉, 어떤 타겟을 어떤 방식으로 컴파일할지 결정하는 설정입니다.
default preset (Default Build 선택 시)

custom preset (1D FIR Filter 선택 시)

원하는 프리셋을 선택하여 적용합니다.
VS Code 좌측의 삼각형 아이콘(CMake)을 누르면 나타나는 사이드바의 핵심 기능을 정리합니다.

현재 프로젝트의 상태를 시각적으로 보여줍니다.
현재 어떤 타겟이 '빌드' 및 '실행' 대상으로 설정되어 있는지 실시간으로 확인할 수 있습니다.

현재 선택된 타겟을 나타냅니다. 리스트의 특정 타겟에 마우스를 올리면 작은 아이콘들이 나타납니다.

빌드 타겟에 마우스를 올리면 나타나는 작은 아이콘을 통해 빌드 대상을 변경할 수 있습니다.

마찬가지로 해당 아이콘으로 실행 타겟도 변경할 수 있습니다.

사이드바에서 설정된 타겟은 하단 상태 표시줄의 망치 및 화살표 아이콘과 즉시 동기화됩니다. 덕분에 한 번 타겟을 잡아두면, 이후에는 단축키나 하단 버튼 클릭만으로 반복적인 컴파일과 실행을 빠르게 수행할 수 있습니다.
이번 글에서는 CMakePresets로 빌드 환경을 표준화하고, VS Code CMake Tools에서 Configure와 Build를 분리해 운영하는 흐름을 정리했습니다.
이렇게 세팅해두면 Windows와 Ubuntu를 오가더라도 동일한 절차로 빌드와 디버깅을 반복할 수 있습니다.
다음 글에서는 generator/toolchain/컴파일러를 preset에 명시적으로 고정하고, CTest preset까지 연결해 자동 검증 루틴을 완성해보겠습니다.