💡 Ninja는 무엇이며, 왜 CMake와 함께 많이 사용될까?

💡 빠른 빌드 속도를 자랑하는 Ninja의 핵심 개념과 사용법을 배워보자!


📌 Ninja란?

NinjaGoogle이 개발한 초고속 빌드 시스템으로, 기존 Make보다 더 빠르고 효율적인 빌드를 제공합니다.
특히, CMake와 함께 사용되며 대형 프로젝트의 증분 빌드(Incremental Build) 속도를 대폭 향상시킵니다.

📌 Ninja의 주요 특징
빠른 빌드 속도 – Make보다 의존성 처리와 병렬 처리가 뛰어남
간단한 파일 구조 – ninja.build 파일을 기반으로 동작
CMake와 함께 사용 가능 – CMake의 백엔드 빌드 시스템으로 활용 가능
증분 빌드 최적화 – 변경된 파일만 다시 빌드


📌 Ninja vs Make 비교

비교 항목Ninja 🥷Make 🔨

속도 매우 빠름 🚀 상대적으로 느림 🐢
빌드 파일 build.ninja (최적화된 파일) Makefile
의존성 처리 강력한 증분 빌드 지원 수동으로 설정 필요
주요 사용 사례 대형 프로젝트 (Chromium, Android) 일반적인 프로젝트

📌 결론: Make보다 더 빠르고 가볍게 동작하므로, 빌드 속도가 중요한 프로젝트에서는 Ninja를 많이 사용함!


📌 Ninja 설치하기

📌 Windows

choco install ninja

📌 Ubuntu/Linux

sudo apt install ninja-build

📌 Mac (Homebrew 사용)

brew install ninja

📌 설치 확인

ninja --version

📌 Ninja 기본 사용법

📌 1. 간단한 build.ninja 파일 만들기

rule compile
  command = g++ -c $in -o $out

rule link
  command = g++ $in -o $out

build main.o: compile main.cpp
build app: link main.o

📌 2. Ninja로 빌드 실행

ninja

📌 3. 특정 타겟만 빌드하기

ninja app

📌 4. 병렬 빌드 실행 (CPU 코어 4개 사용)

ninja -j4

📌 CMake와 함께 Ninja 사용하기

📌 1. CMake 프로젝트에서 Ninja 활성화

cmake -G Ninja -B build

📌 2. Ninja로 빌드 실행

ninja -C build

📌 3. CMake와 Ninja를 활용한 전체 빌드

cmake -G Ninja -S . -B build
cmake --build build

📌 Ninja를 사용하는 대표적인 프로젝트

Google Chromium (Chrome 브라우저 빌드)
Android AOSP 빌드 시스템
LLVM 및 Clang 빌드
CMake 기반의 대형 C++ 프로젝트


🎯 마무리

Ninja는 Make보다 빠르고 최적화된 빌드 시스템
CMake와 함께 사용하면 대형 프로젝트 빌드 속도가 향상됨
대형 프로젝트 (Chrome, Android)에서 필수적으로 사용됨

💡 이제 직접 Ninja를 사용해서 빌드 속도를 높여볼까요? 🚀


 

+ Recent posts