הקבצים 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"],
)