CMake는 다양한 플랫폼에서 일관된 빌드 환경을 제공하는 도구로, 여러 운영 체제와 컴파일러를 지원한다. 아래는 CMake를 사용하여 대표적인 플랫폼과 환경에서 프로젝트를 빌드하는 예제를 제시한다.
리눅스 환경에서의 빌드 예제
리눅스 환경에서는 주로 GCC 컴파일러와 Make 빌드 시스템을 사용한다. 아래는 간단한 C++ 프로젝트를 CMake로 빌드하는 예제이다.
1. CMakeLists.txt 파일 작성
cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
set(CMAKE_CXX_STANDARD 11)
add_executable(hello main.cpp)
2. main.cpp
소스 파일 작성
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
3. 빌드 과정
터미널에서 다음 명령을 실행하여 빌드한다:
mkdir build
cd build
cmake ..
make
이 과정에서 cmake ..
명령은 프로젝트의 Makefile을 생성하고, make
명령은 실제로 프로그램을 컴파일하고 링크하여 실행 파일을 생성한다.
윈도우 환경에서의 빌드 예제
윈도우 환경에서는 Visual Studio를 많이 사용한다. CMake는 Visual Studio 솔루션 파일을 자동으로 생성할 수 있다.
1. CMakeLists.txt 파일 작성
리눅스에서 사용한 CMakeLists.txt 파일과 동일한다.
2. main.cpp
소스 파일 작성
마찬가지로 리눅스에서 사용한 소스 파일과 동일한다.
3. 빌드 과정
Visual Studio용 빌드 파일을 생성하려면 다음 명령을 사용한다:
mkdir build
cd build
cmake .. -G "Visual Studio 16 2019"
이 명령은 Visual Studio 2019에 맞는 솔루션 파일(.sln
)을 생성한다. 생성된 솔루션 파일을 Visual Studio에서 열어 빌드할 수 있다.
macOS 환경에서의 빌드 예제
macOS에서는 기본적으로 Clang 컴파일러를 사용하며, Xcode 프로젝트를 생성할 수 있다.
1. CMakeLists.txt 파일 작성
리눅스와 동일한 CMakeLists.txt 파일을 사용한다.
2. main.cpp
소스 파일 작성
역시 동일한 소스 파일을 사용한다.
3. 빌드 과정
Xcode 프로젝트를 생성하려면 다음 명령을 사용한다:
mkdir build
cd build
cmake .. -G "Xcode"
이 명령은 Xcode 프로젝트 파일(.xcodeproj
)을 생성한다. Xcode에서 이 프로젝트 파일을 열어 빌드할 수 있다.
크로스 컴파일 예제
임베디드 시스템이나 다른 플랫폼에서 실행될 바이너리를 빌드해야 할 때 크로스 컴파일이 필요하다. CMake는 이를 지원하며, 예를 들어 ARM 프로세서를 위한 크로스 컴파일 설정은 다음과 같다.
1. 크로스 컴파일 도구체인 파일 작성
arm-gcc-toolchain.cmake
라는 이름의 도구체인 파일을 작성한다.
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
set(CMAKE_FIND_ROOT_PATH /path/to/arm/sysroot)
2. CMakeLists.txt 파일 작성
역시 리눅스에서 사용한 것과 동일하게 작성한다.
3. 빌드 과정
터미널에서 다음 명령을 사용해 크로스 컴파일을 수행한다:
mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../arm-gcc-toolchain.cmake
make
이 과정에서 ARM 프로세서를 위한 바이너리가 생성된다.
Docker를 이용한 빌드 예제
Docker를 사용하면 특정 환경에서의 빌드를 자동화할 수 있다.
1. Dockerfile 작성
FROM ubuntu:20.04
RUN apt-get update && \
apt-get install -y cmake g++ make
WORKDIR /app
COPY . .
RUN mkdir build && cd build && cmake .. && make
2. CMakeLists.txt 파일 및 소스 파일 작성
위의 리눅스 예제에서 사용한 파일들을 사용한다.
3. Docker 빌드 및 실행
터미널에서 다음 명령을 사용해 Docker 이미지를 빌드하고 실행한다:
docker build -t cmake-example .
docker run --rm cmake-example
이 명령은 Docker 컨테이너 내에서 프로젝트를 빌드하고, 생성된 실행 파일을 실행한다.
관련 자료:
- Kitware Inc., CMake Documentation, https://cmake.org/cmake/help/latest/
- Docker Documentation, https://docs.docker.com/
- ARM Developer, Cross Compiling for ARM with CMake, https://developer.arm.com/