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

วันที่ รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 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 ได้เพื่อเพิ่มทรัพยากร 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"],
)