위키득계정 ↗
기술

Ninja

Ninja기술
주요 입력
build.ninja
주요 역할
의존 관계 기반 빌드 실행
대표 생성 도구
Meson CMake GN
실행 방식
증분과 병렬 처리
Ninja는 파일의 의존 관계를 바탕으로 필요한 빌드 명령을 실행하는 작은 빌드 시스템이다. 복잡한 설정 판단은 상위 생성 도구에 맡기고 이미 정의된 작업을 증분 및 병렬 실행하는 데 초점을 둔다.

생성 도구와 나누는 역할

Ninja 파일은 사람이 복잡한 조건을 직접 작성하기보다 다른 프로그램이 생성하는 사용을 지향한다. 컴파일러 옵션이나 빌드 모드의 결정은 생성 도구에서 수행한다. Ninja는 입력과 출력 사이의 관계 및 실행할 명령을 받아 필요한 작업을 수행한다.

다시 빌드할 대상의 판단

파일 시각을 활용해 오래된 타깃을 찾고 명령행 변경도 출력의 재생성 조건으로 다룬다. C와 C++의 헤더처럼 빌드 중 발견하는 추가 의존성도 지원한다. 하나의 빌드 단계에서 여러 출력을 정의할 수 있으며 올바른 증분 실행에는 빠짐없는 의존 관계가 필요하다.

병렬 실행과 출력

독립적인 빌드 명령을 병렬로 수행하고 출력은 작업별로 모아 서로 뒤섞이지 않게 한다. 실패한 작업의 전체 명령과 출력을 함께 확인할 수 있다. C 컴파일 같은 내장 기본 규칙을 제공하는 도구가 아니므로 실제 실행 규칙은 생성된 빌드 정의에 담겨 있어야 한다.

관련 문서

Meson / CMake / Bazel / Make / 프로세스 / 빌드 시스템