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