지금까지 간단한 프로젝트를 하거나 코드를 짤 때는 Visual Studio로 솔루션을 만들고 프로젝트를 정의하고 C++ 코드를 작성했다. 하지만 이러한 코드를 Linux 환경으로 가져갔을 때, Linux용 C++ 컴파일러를 준비해놨다고 해도 빌드가 되지 않는다. 왜냐하면 Linux에는 Visual Studio 가 없기 때문이다. Linux에서는 C++ 코드를 Make 빌드 시스템을 이용한다. CMake는 이러한 빌드 시스템을 Windows, Linux 등의 cross-platform 환경에서 제공하며, 이러한 이유 때문에 cross-platform 개발에는 CMake가 거의 필수적으로 사용된다. Ninja, Conan 등과 같이 기타 빌드 시스템이 사용되기도 하지만, 이러한 시스템들도 CMake를 내장하고 있다고 들었다 (사실인지는 모르겠다).
지금까지는 개인 프로젝트를 진행했을 때는 프로젝트의 크기가 작았기 때문에 , 어떤 헤더/소스파일이 추가되거나 제거되어도 버전 파악에 큰 문제가 없었다. 하지만 팀 단위의 작업을 하면서 어떤 3rd party library, 어떤 헤더, 어떤 소스파일이 빠지게 되는지 등등을 확인할 때, Visual Studio 프로젝트 빌드 파일을 보는 것 보다, 개인적으로 CMakeList.txt를 확인하는 것이 더 편했다. 그리고 솔루션 내부 특정 파일/프로젝트을 빼서 빌드하고 싶을 때, 빠르게 CMake에서 제거하고 빌드할 수 있었다.
개인적인 취향이 매우 많이 반영되었지만, JetBrains 사의 CLion IDE가 너무 이쁘다. C++ 완전 초보일 때 CLion이 너무 이뻐서 이 IDE를 선택하고 싶었지만, CMake를 이해하지 못해서 OpenCV를 include할 수 없었다. 그래서 Visual Studio로 돌아왔고 1년이 넘게 Visual Studio만을 사용했다. 이젠 이쁜 IDE로 넘어가고 싶다 ㅋㅋ
cmake_minimum_required(VERSION 3.10)
# set the project name
project(Test)
# specify the C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# add the executable
add_executable(Test main.cpp)
대충 Hello world program을 만들었다.