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