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

किसी समस्या की शिकायत करें सोर्स देखें रात · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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