변수 공유

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
문제 신고 출처 보기

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"],
)