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