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