Overview
CMake는 meta build sytstem이다. 이는 추상화된 텍스트 구성(configuration))으로부터 실제로 native build tool 파일을 생성한다. 대개 이 코드들은 `CMakeLists.txt` 파일에 있다.
서로 다른 플랫폼/IDE에서 공유디는 C++ 프로젝트가 포함된 크로스 플랫폼 프로젝트가 있다고 가정해보자. Windows에서는 Visual studio, OSX에서는 Xcode, Linux에서는 Makefile을 사용한다고 하면 `bar.cpp`를 추가하기 위해 각각 다른 tool에 일일히 파일을 새로 추가해야 한다. 특히 빨간색 화살표는 수동으로 해야하는 작업을 의미한다. 일관된 환경을 유지하기 위해 비슷한 업데이트를 여러 번 반복해야하며, 이를 수동으로 수행해야 한다.

CMake는 다음과 같이 개발 과정에 하나의 추가 단계를 추가함으로 이런 설계문제를 해결한다.

`CMakeLists.txt` 파일에 프로젝트를 기술하고, CMake를 사용해서 크로스 플랫폼 빌드 도구를 생성할 수 있다.
도구의 집합
CMake는 개발자를 위한 소스코드 단계, 품잘 관리 단계, 사용자용 설치 파일 생성 단계까지의 전체 파이프라인을 모두 도와줄 수 있는 도구의 집합이다. 다음 액티비티 다이어그램은 CMake, CTest, CPack의 연결관계를 보여준다.

Generate 단계
- `cmake -H. -B_builds` 명령을 받으면, `CMakeLists.txt`(`CMake Source`)를 읽어서 빌드 디렉토리에 네이티브 파일을 "Generate"한다.
- `Third party libraries` : CMake의 Generate 단계에서 라이브러리 탐색도 수행한다.
- Native Build System 파일을 생성한다. (예, vcxproj)
Build 단계
- Generate 단계에서 생성된 네이티브 빌드 파일과 네이티브 빌드 도구를 사용해서 실제 컴파일을 수행한다.
- 이 과정에서 실제 C++ 파일도 참조된다.
- 결과물: `.exe`, `.dll`, `.so`, `.a` 등 (이러한 결과물을 binary라고 부름. 이진화 되어있어서 그런 것 같음)
해당 포스팅은 개요이므로 나머지 CTest, CPack 단계 설명은 필요 시 설명진행
참고 자료
https://cgold.readthedocs.io/en/latest/overview/cmake-can.html
'패키지 설치 및 빌드 시스템 > CMake' 카테고리의 다른 글
| [CMake, CGold] 2. First Step (0) | 2026.01.24 |
|---|---|
| [CMake] install (0) | 2025.09.05 |
| [CMake] ExternalProject_Add() 사용 연습 (0) | 2025.04.24 |
| [CMake] .cmake 파일의 사용 (0) | 2025.04.23 |
| [CMake] target_link_directories(), target_link_libraries() (0) | 2025.04.22 |