Native build tool
CMake는 빌드를 스스로 하려고 디자인된 도구가 아니다. 이는 실제 native build tool 파일을 생성한다. 그러므로 CMake를 사용할 때는 도구를 선택하고 필요하다면 설치해야 한다. 옵션 `-G <generator-name>`은 사용할 제너레이터의 타입을 지정할 때 사용된다. 만약 옵션이 없다면, CMake는 디폴트 제너레이터를 사용할 것이다. (예를 들어, nix 플랫폼이라면 `Unix Makefiles`)
사용 가능한 제너레이터 목록은 호스트 운영체제에 따라 달라진다(예: Visual Studio 계열 제너레이터는 Linux에서는 사용할 수 없다). 이 목록른 `cmake --help`명령을 통해 얻을 수 있다.
> cmake --help
...
Generators
The following generators are available on this platform (* marks default):
* Visual Studio 17 2022 = Generates Visual Studio 2022 project files.
Use -A option to specify architecture.
Visual Studio 16 2019 = Generates Visual Studio 2019 project files.
Use -A option to specify architecture.
Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Optional [arch] can be "Win64" or "ARM".
Borland Makefiles = Generates Borland makefiles.
NMake Makefiles = Generates NMake makefiles.
NMake Makefiles JOM = Generates JOM makefiles.
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
mingw32-make.
Green Hills MULTI = Generates Green Hills MULTI files
(experimental, work-in-progress).
Unix Makefiles = Generates standard UNIX makefiles.
Ninja = Generates build.ninja files.
Ninja Multi-Config = Generates build-<Config>.ninja files.
Watcom WMake = Generates Watcom WMake makefiles.
CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files
(deprecated).
CodeBlocks - NMake Makefiles = Generates CodeBlocks project files
(deprecated).
CodeBlocks - NMake Makefiles JOM
= Generates CodeBlocks project files
(deprecated).
CodeBlocks - Ninja = Generates CodeBlocks project files
(deprecated).
CodeBlocks - Unix Makefiles = Generates CodeBlocks project files
(deprecated).
CodeLite - MinGW Makefiles = Generates CodeLite project files
(deprecated).
CodeLite - NMake Makefiles = Generates CodeLite project files
(deprecated).
CodeLite - Ninja = Generates CodeLite project files
(deprecated).
CodeLite - Unix Makefiles = Generates CodeLite project files
(deprecated).
Eclipse CDT4 - NMake Makefiles
= Generates Eclipse CDT 4.0 project files
(deprecated).
Eclipse CDT4 - MinGW Makefiles
= Generates Eclipse CDT 4.0 project files
(deprecated).
Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files
(deprecated).
Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files
(deprecated).
Kate - MinGW Makefiles = Generates Kate project files (deprecated).
Kate - NMake Makefiles = Generates Kate project files (deprecated).
Kate - Ninja = Generates Kate project files (deprecated).
Kate - Ninja Multi-Config = Generates Kate project files (deprecated).
Kate - Unix Makefiles = Generates Kate project files (deprecated).
Sublime Text 2 - MinGW Makefiles
= Generates Sublime Text 2 project files
(deprecated).
Sublime Text 2 - NMake Makefiles
= Generates Sublime Text 2 project files
(deprecated).
Sublime Text 2 - Ninja = Generates Sublime Text 2 project files
(deprecated).
Sublime Text 2 - Unix Makefiles
= Generates Sublime Text 2 project files
(deprecated).
컴파일러
Native build tool은 우리의 빌드를 조율하기만 할 뿐이며, 우리는 C++ 소스로부터 실제로 바이너리를 생성하는 컴파일러를 가지고 있어야 한다.
Visual Studio
Visual Studio의 컴파일러 `cl.exe`는 IDE와 함께 설치되므로, 별도의 추가 작업은 필요하지 않다.
Ubuntu GCC
GCC 컴파일러는 보통 Lilnux에서 사용된다. Ubuntu에 설치하려면 다음 명령어를 입력하면 된다.
sudo apt-get install -y gcc
Minimal example
cmake_minimum_required(VERSION 3.20)
project(foo) # Project를 `foo`로 선언하면, Visaul Studio에서는 `foo.sln`으로 이름을 가지게 된다
add_executable(foo foo.cpp)
CMake는 몇 가지 사전에 정의된 세팅을 가지고 있다. 그래서 다음과 같은 사항은 자동으로 처리된다.
- `*.cpp` 확장자는 C++ 소스 파일을 의미하므로, 타겟 `foo`는 C++ 컴파일러로 빌드된다.
- 윈도우에서는 보통 `.exe`를 접미사로 가지므로 결과로 생성되는 바이너리 이름은 `foo.exe`가 된다.
- OSX 또는 Linux같은 유닉스 플랫폼에서는 보통 접미사를 가지지 않으므로, 결과로 생성되는 바이너리 이름은 `foo`가 된다.
GUI로 native tool files 생성 및 빌드
1. Configure의 기반이 되는 경로와 Build될 결과가 저장될 디렉토리 경로 지정

Configure, Generate 결과확인


Generate가 완료되면 build 폴더에서 `foo.sln`가 생성된 것을 확인할 수 있다.

Sln파일을 열어서 프로젝트 시작 후 결과 확인



CLI로 native tool files 생성
경로 지정은 사용자의 환경에 맞춰 진행.
Configure + Generate
cmake -S . -B ../../out/build -G "Visual Studio 17 2022"
build
cmake --build ../../out/build
바이너리 실행
> ../../out/build/Debug/foo.exe
Hello from CGold!
참고 자료
- https://cgold.readthedocs.io/en/latest/first-step/native-build-tool.html
- https://cgold.readthedocs.io/en/latest/first-step/compiler.html
- https://cgold.readthedocs.io/en/latest/first-step/compiler/ubuntu-gcc.html
- https://cgold.readthedocs.io/en/latest/first-step/minimal-example.html
- https://cgold.readthedocs.io/en/latest/first-step/generate-native-tool.html
'패키지 설치 및 빌드 시스템 > CMake' 카테고리의 다른 글
| [CMake, CGold] 1. Overview - What CMake can do (0) | 2026.01.21 |
|---|---|
| [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 |