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

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