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