Zig 빌드 시스템
Zig 빌드 시스템 (Zig Build System)
프로젝트를 빌드하는 로직을 어디에, 어떻게 적어야 할지 막막하셨을 거예요. Zig 빌드 시스템(Zig Build System)은 바로 그 고민을 해결해 주는 도구예요. 플랫폼에 상관없이, 외부 의존성 없이 빌드에 필요한 로직을 선언할 수 있게 해 주죠. 이번에는 빌드 시스템이 어떤 일을 하는지, 그리고 실제로는 어떻게 쓰는지 살펴볼게요.
본문
Zig 빌드 시스템은 플랫폼에 상관없이 동작하면서, 외부 의존성이 없는 방식으로 프로젝트를 빌드하는 데 필요한 로직을 선언할 수 있게 해 줘요. 이 시스템에서는 빌드 로직을 build.zig 파일에 적게 되는데, 여기서 Zig 빌드 시스템 API를 사용해서 빌드 산출물(build artifacts)과 그 밖의 작업들을 선언하고 구성해요.
빌드 시스템이 도와줄 수 있는 작업들을 몇 가지 꼽아볼게요.
- 작업들을 병렬로 수행하고 그 결과를 캐싱하기
- 다른 프로젝트에 의존하기
- 다른 프로젝트가 의존할 수 있도록 패키지(package)를 제공하기
- Zig 컴파일러를 실행해서 빌드 산출물 만들기. 여기에는 Zig 소스 코드뿐 아니라 C, C++ 소스 코드를 빌드하는 일도 포함돼요.
- 사용자가 설정한 옵션을 받아서, 그 옵션으로 빌드를 구성하기
- 빌드 설정을 comptime 값으로 노출하고, Zig 코드가 import할 수 있는 파일을 제공하기
- 빌드 산출물을 캐싱해서 불필요하게 단계를 반복하지 않기
- 빌드 산출물이나 시스템에 설치된 도구 실행하기
- 테스트를 실행하고, 빌드 산출물을 실행한 출력이 기대한 값과 일치하는지 확인하기
- 코드베이스 전체나 일부에 대해
zig fmt실행하기 - 사용자 정의 작업(custom tasks) 처리하기
빌드 시스템을 사용하려면 zig build --help를 실행해 보세요. 명령줄 사용법 도움말이 출력되는데, 여기에는 build.zig 스크립트에 선언한 프로젝트별 옵션도 함께 포함돼요.
지금은 빌드 시스템에 대한 자세한 문서가 외부에 호스팅되어 있어요. 빌드 시스템 문서를 참고하면 더 깊이 있는 내용을 볼 수 있습니다.
더 알아보기
- Build System Documentation — Zig 빌드 시스템 전체 문서
- comptime — 빌드 설정을 컴파일 타임 값으로 노출하는 개념
- Zig Documentation — 이 문서의 소스 전체