فایلهای 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"],
)