변수 공유

BUILD 파일은 간단하고 선언적이어야 합니다. 일반적으로 일련의 타겟 선언으로 구성됩니다. 코드베이스와 BUILD 파일이 커짐에 따라 다음과 같은 중복이 발생할 수 있습니다.

cc_library(
  name = "foo",
  copts = ["-DVERSION=5"],
  srcs = ["foo.cc"],
)

cc_library(
  name = "bar",
  copts = ["-DVERSION=5"],
  srcs = ["bar.cc"],
  deps = [":foo"],
)

BUILD 파일의 코드 중복은 일반적으로 괜찮습니다. 이렇게 하면 파일을 더 쉽게 읽을 수 있습니다. 각 선언은 컨텍스트 없이 읽고 이해할 수 있습니다. 이는 사람뿐만 아니라 외부 도구에도 중요합니다. 예를 들어 도구는 BUILD 파일을 읽고 업데이트하여 누락된 종속 항목을 추가할 수 있습니다. 코드 리팩터링 및 코드 재사용은 이러한 자동 수정을 방지할 수 있습니다.

값을 공유하는 것이 유용한 경우 (예: 값을 동기화해야 하는 경우) 변수를 도입할 수 있습니다.

COPTS = ["-DVERSION=5"]

cc_library(
  name = "foo",
  copts = COPTS,
  srcs = ["foo.cc"],
)

cc_library(
  name = "bar",
  copts = COPTS,
  srcs = ["bar.cc"],
  deps = [":foo"],
)

이제 여러 선언에서 COPTS 값을 사용합니다. 규칙에 따라 전역 상수의 이름을 지정할 때는 대문자 를 사용합니다.

여러 BUILD 파일에서 변수 공유

여러 BUILD 파일에서 값을 공유해야 하는 경우 .bzl 파일에 값을 넣어야 합니다. .bzl 파일에는 BUILD 파일에서 사용할 수 있는 정의 (변수 및 함수) 가 포함되어 있습니다.

path/to/variables.bzl에서 다음을 작성합니다.

COPTS = ["-DVERSION=5"]

그런 다음 BUILD 파일을 업데이트하여 변수에 액세스할 수 있습니다.

load("//path/to:variables.bzl", "COPTS")

cc_library(
  name = "foo",
  copts = COPTS,
  srcs = ["foo.cc"],
)

cc_library(
  name = "bar",
  copts = COPTS,
  srcs = ["bar.cc"],
  deps = [":foo"],
)