CMake에 관심 없는 사람을 위한, 초간단 CMake 가이드
CMake를 별로 알고싶지 않은 사람을 위한, 최소한만 다루는 CMake 가이드이다.
목차
기본 개념
CMake 자체는 빌드 시스템이라기보다는 빌드 시스템을 위한 빌드 시스템이다.
CMake만 가지고는 빌드에 써먹을 수 없고, make나 Visual Studio Build Tools (Visual Studio에 내장), 또는 Ninja나 Meson 등 별개의 빌드시스템이 필요하다.
cli 프로그램으로, 이름은 cmake이고, 설정 파일로는 CMakeLists.txt를 사용한다.
사실 GUI도 있긴 하지만 거의 사용하지 않는다.
빌드 방법
우선 빌드할 때 생기는 임시 파일이나 빌드 설정 등이 들어갈 빌드 폴더가 필요하다.
빌드 폴더에 가서 cmake (CMakeLists.txt가 있는 폴더 경로)를 실행하거나, CMakeLists.txt가 있는 폴더에서 cmake -B (빌드 폴더 경로)를 실행해 빌드 폴더를 만들 수 있다.
또는 아무데서나 cmake -B (빌드 폴더 경로) (CMakeLists.txt가 있는 폴더 경로)를 실행해도 되긴 한다.
git clone /path/to/repository repository
cd repository
cmake -B builddir
# 또는
mkdir builddir && (cd builddir && cmake ..)
그렇게 빌드 폴더를 만들고 나면 cmake --build (빌드 폴더 경로)로 빌드할 수 있다.
예시
#include <stdio.h>
int main() {
puts("Hello world!");
return 0;
}
cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
add_executable(hello main.c)
이런 파일이 있다고 하자.
cmake -B builddir src
cmake --build builddir
# 또는
mkdir builddir
cd builddir
cmake ../src
cmake --build .
이런 명령어를 실행하면 hello.exe가 생긴 것을 확인할 수 있다.

어떤 빌드시스템을 사용했는지에 따라 출력 위치는 다를 수 있다. 내 경우에는 Visual Studio Build Tools를 사용했다.
CMakeLists.txt
CMakeLists.txt 파일에서 프로젝트의 이름을 정의하고, 소스 파일과 라이브러리를 추가하며, 대상(실행 파일이나 라이브러리)을 설정할 수 있다.
함수 호출처럼 생긴 명령어들로 이루어져 있다.
cmake_minimum_required(VERSION 3.10) # CMake 최소 버전 지정
project(MyProject) # 프로젝트 이름
# 대상 실행 파일 추가 (소스코드 지정)
add_executable(myapp main.cpp sub.cpp)
# 라이브러리 링크
target_link_libraries(myapp mylib)
주요 CMake 명령어
cmake_minimum_required(VERSION): 필요한 CMake의 최소 버전을 지정 (필수)project(name): 프로젝트의 이름을 정의 (필수)add_executable(name source1 source2 ...): 실행 파일 생성add_library(name STATIC source1 source2 ...): 정적 라이브러리 생성add_library(name SHARED source1 source2 ...): 동적 라이브러리 생성target_link_libraries(target lib1 lib2 ...): 특정 대상에 라이브러리를 연결include_directories(dir1 dir2 ...): 헤더 include 디렉터리 추가
마무리
일단 CMake는 크로스 플랫폼 빌드를 위한 것이지만, 크로스 플랫폼을 고려하지 않더라도 좋은 빌드 시스템이다.
C나 C++을 쓴다면 꼭 써 보는 것을 권장한다.