वैरिएबल शेयर करना

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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