Scientia Conditorium
[CMake] CMake란?! 본문
CMake 정의
Cross Platform Make 의 약자로 빌드 과정을 Platform, ToolChain에 비종속적인 방법으로 작성할 수 있음.
빌드 시스템(Build System)이 아닌 빌드 시스템 생성기(Build System Generator).
즉, Visual Studio, XCode와 같은 Native Build System이 사용하는 파일을 생성.
생성 후 Test, Package를 통해 간편하게 실행할 수 있도록 지원
Build System 정의
빌드를 정의하고 수행하기 위한 파일과 도구를 의미
예를 들어 아래와 같은 것들이 있음
- 소스 코드(Source Code)
- 리소스(Resource)
- 컴파일러(Compiler)
- 링커(Linker)
- 패키징(Packaging)
- 테스팅(Testing)
- Operating System
- SDK
CMake 역할
- CMakeLists.txt
- CMake 명령어를 사용하여 프로그램을 어떻게 구성하고 빌드할지 정의
- CMake는 CMakeLists.txt을 읽고 빌드하기 위해 필요한파일들을 생성
- 이 때 바로 생성하는 파일들이 XCode, Visual Studio, Make가 될 수 있음
- 여기서 CMake가 빌드 시스템에 필요한 파일들을 생성해주기 때문에 CMake가 바로 Build System Generator인 것.
- 생성한 이후부터는 CMake가 관여하지 않고 Build System을 사용해서 빌드를 진행
- 따라서 새로운 파일을 생성한다면 CMakeLists.txt에 추가해주어야 함.
빌드 시스템에 넣어주어도 빌드는 되지만 추후 문제가 발생할 수 있음. - 새 파일 추가 시 매번 CMake를 다시 실행해주어야 하는 단점이 있음.
- 그러나 기존의 빌드 시스템의 파일 변경 사항은 사람이 바로 알기 어렵게 구성되어있는데,
CMake는 프로그램 언어와 비슷하기 때문에 변경 사항을 바로 이해할 수 있음.
이로 인해 Version Control System에 매우 친화적
- CMake는 Build System Generator 이기 때문에 Build, Test, Install, Package를 CMake가 직접 하는 것이 아니라
빌드 시스템을 사용하는 것.
즉, CMake는 빌드 시스템을 호출해 주는 정도의 역할
'프로그래밍 > C++' 카테고리의 다른 글
| [C++][Summary] Approaching C++ Safety - Bjarne Stroustrup (3) | 2023.08.23 |
|---|---|
| [C++] struct 와 class 의 차이점 (1) | 2022.09.17 |
| [C++] 이중 map - map 안에 map 사용하기 (0) | 2022.09.17 |
| [C++] 이미지 파일 ↔ 바이너리 파일 변환하기 (0) | 2022.09.09 |
