يهدف 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
متعددة، عليك وضعها في ملف .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"],
)