متغيرات المشاركة

يهدف 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"],
)