ไฟล์ 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"],
)