닌자 (빌드 시스템)
닌자(Ninja)는 속도에 중점을 둔 소형 빌드 시스템이다. 다른 빌드 시스템과 다른 점은 상위 레벨 빌드 시스템에서 입력 파일을 생성하도록 설계되었으며 최대한 빨리 빌드를 실행하도록 설계된 것이다.
개발자 | 에반 마틴(Evan Martin) |
---|---|
발표일 | 2012년[1] |
안정화 버전 | 1.11.0[2]
/ 2022년 5월 15일 |
저장소 | |
프로그래밍 언어 | C++, 파이썬 |
운영 체제 | 크로스 플랫폼 |
종류 | 프로그래밍 도구 |
라이선스 | 아파치 라이센스 2.0 |
상태 | 개발 중 |
웹사이트 | ninja-build |
Make는 증분 빌드(또는 무연산 빌드)를 수행할 때 안정성을 위해 속도가 상대적으로 느려진다.[3][4] 이렇게하면 예를 들어 약39,000 개의 입력 파일을 하나의 실행 파일로 컴파일하는[5] 크로미움(chromium) 과 같은 대규모 프로젝트에서 작업하는 개발자의 작업 속도가 상당히 느려질 수 있다. 실제로 크롬(chrome)은 Ninja[6]의 주요 사용자이다. 이러한 의미로 닌자(Ninja)는 Make를 대체하기 위한 것일 수 있다. Make 와는 달리 Ninja 빌드 파일은 손으로 직접 작성하지 않으므로 Ninja에는 문자열 조작과 같은 기능이 없다. 대신 닌자(Ninja) 빌드 파일을 생성하려면 "빌드 생성기"를 사용해야 한다. 전통적인 CMake 같은 다른 빌드 관리 소프트웨어도[7] 닌자(Ninja)[8]에 대한 빌드 파일 생성을 지원한다.
일부 대형 프로젝트에서는 닌자 빌드 파일 생성기를 별도로 제공하는데, 일례로 크로미움 프로젝트는 GN이라는 닌자 빌드 파일 생성기를 소스코드 관련 툴(depot tolos)을 배포시 포함한다.[9]
기타기능
편집예시
편집rule cc
command = gcc -c -o $out $in
description = CC $out
rule link
command = gcc -o $out $in
description = LINK $out
build source1.o: cc source1.c
build source2.o: cc source2.c
build myprogram: link source1.o source2.o
같이 보기
편집각주
편집- ↑ Martin, Evan. “Google Groups: ninja-build”. 2017년 6월 18일에 확인함.
- ↑ “Releases - ninja-build/ninja”. 2022년 6월 20일에 확인함.
- ↑ 증분 빌드
- ↑ Röthlisberger, David. “The Ninja build tool”. 《LWN》. 2017년 6월 18일에 확인함.
- ↑ 크로미움,버전 62.0.3195.0-개발자 빌드,32비트
- ↑ Metz, Cade. “Google man open sources Chrome build system”. 《The Register》. 2017년 6월 18일에 확인함.
- ↑ http://lethean.github.io/2016/03/17/about-ninja-build/
- ↑ Kitware. “cmake Documentation”. 2017년 6월 18일에 확인함.
- ↑ https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
- ↑ (chromium 빌드)$ ninja -C out/Default mini_installer