ตัวแปรการแชร์

รายงานปัญหา ดูแหล่งที่มา

ไฟล์ 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 เพื่อเพิ่มทรัพยากร Dependency ที่ขาดหายไปได้ การเปลี่ยนรูปแบบโค้ดและการใช้โค้ดซ้ําอาจส่งผลให้เกิดการแก้ไขอัตโนมัติในลักษณะนี้

หากจําเป็นต้องแชร์ค่า (เช่น หากต้องซิงค์ค่า) คุณสามารถแนะนําตัวแปรได้ดังนี้

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