less than 1 minute read

Bazel

Bazel project 를 구성하는 기본적인 파일

  • MODULE.bazel
    • bazel module 을 관리하는 시스템을 Bzlmodule 라고 하는듯하는데, 이를 이용해서 외부 종속성을 정의하는데 사용함.
    • 의존성 그래프를 자동으로 생성하고 충돌을 해결함
    • WORKSPACE 에서도 외부 종속성을 적어줄 수 있지만 이것을 이용하는 이유
      • Bzlmod 를 공식적으로 채택하려고 하기때문에 이를 이용하는 것이 더 좋음
      • 서로 다른 라이브러리가 동일한 외부 종속성의 다른 버전을 요구하면 MODULE.bazel 은 이를 적절히 조정해준다.
  • WORKSPACE
    • 프로젝트의 root directory 정의
    • 마찬가지로 외부 라이브러리나 도구의 경로를 설정
      • 여기서 도구란?
    • 원격 repo, http 소스 , git repo 에서 가져올 외부 종속성 선언
    • bazel 의 새로운 형식에서는 WORKSPACE.bazel 로 작성함.
  • BUILD
    • build target 정의
    • bazel 에서 실행할 작업( compile, test, packaging 등 ) 지정
    • target 간의 dependency 정의
    • 소스파일, 출력파일, 빌드 옵션 정의
    • BUILD.bazel 라고 만들기도 함
  • .bazelrc
    • 빌드 및 실행 설정 정의하는 파일
    • 사용자 지정 bazel 명령어 플래그 저장
    • 공통적인 명령줄 옵션을 설정해서 일관성을 가져감
      • 예를 들면, CC=gcc
    • profiling, debugging, optimization 등을 위해 설정 추가
    • 환경별로 다른 옵션 제공 ( local build vs remote build)
      • ?
  • .bazelversion
    • bazel version 명시
  • defs.bzl
    • 사용자정의 bazel 매크로 및 규칙 작성
    • 복잡한 빌드 규칙을 재사용 가능하게 캡슐화 하는 파일

Reference

Tags:

Categories:

Updated: