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