native.cc_library โปรดทราบว่าโมดูลเนทีฟจะใช้ได้เฉพาะในระยะการโหลด (เช่น สำหรับมาโคร ไม่ใช่สำหรับการใช้งานกฎ) แอตทริบิวต์จะละเว้น None ค่า และถือว่าแอตทริบิวต์ไม่ได้ตั้งค่านอกจากนี้ยังมีฟังก์ชันต่อไปนี้ให้ใช้งานด้วย
สมาชิก
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_default_visibility
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- subpackages
existing_rule
unknown native.existing_rule(name)
None หากไม่มีอินสแตนซ์กฎที่มีชื่อนั้นในที่นี้ ออบเจ็กต์ที่คล้ายกับ dict ที่เปลี่ยนแปลงไม่ได้ หมายถึงออบเจ็กต์ x ที่เปลี่ยนแปลงไม่ได้อย่างลึกซึ้ง ซึ่งรองรับการทำซ้ำที่คล้ายกับ dict, len(x), name in x, x[name], x.get(name), x.items(), x.keys() และ x.values()
ผลลัพธ์จะมีรายการสำหรับแอตทริบิวต์แต่ละรายการ ยกเว้นแอตทริบิวต์ส่วนตัว (ชื่อไม่ขึ้นต้นด้วยตัวอักษร) และประเภทแอตทริบิวต์เดิมบางประเภทที่แสดงไม่ได้ นอกจากนี้ dict ยังมีรายการสำหรับ name และ kind ของอินสแตนซ์กฎ (เช่น 'cc_binary')
ค่าของผลลัพธ์จะแสดงค่าแอตทริบิวต์ดังนี้
- แอตทริบิวต์ประเภทสตริง จำนวนเต็ม และบูลีนจะแสดงตามที่เป็นอยู่
- ระบบจะแปลงป้ายกำกับเป็นสตริงในรูปแบบ
':foo'สำหรับเป้าหมายในแพ็กเกจเดียวกัน หรือ'//pkg:name'สำหรับเป้าหมายในแพ็กเกจอื่น - รายการจะแสดงเป็นทูเพิล และ dict จะแปลงเป็น dict ใหม่ที่เปลี่ยนแปลงได้ โดยองค์ประกอบของรายการและ dict จะได้รับการแปลงแบบเรียกซ้ำในลักษณะเดียวกัน
- ระบบจะแสดงผลค่า
selectพร้อมเนื้อหาที่แปลงตามที่อธิบายไว้ข้างต้น - ระบบจะยกเว้นแอตทริบิวต์ที่ไม่ได้ระบุค่าระหว่างการสร้างอินสแตนซ์กฎและแอตทริบิวต์ที่มีการคำนวณค่าเริ่มต้นจากผลลัพธ์ (ระบบจะคำนวณค่าเริ่มต้นที่คำนวณได้ก็ต่อเมื่ออยู่ในระยะการวิเคราะห์)
หากเป็นไปได้ ให้ใช้ฟังก์ชันนี้เฉพาะใน ฟังก์ชันการใช้งานของมาโครสัญลักษณ์ตัวสุดท้ายของกฎ เราไม่แนะนำให้ใช้ฟังก์ชันนี้ในบริบทอื่นๆ และระบบจะปิดใช้ฟังก์ชันนี้ใน Bazel เวอร์ชันที่จะเปิดตัวในอนาคต เนื่องจากฟังก์ชันนี้ทำให้ไฟล์ BUILD เปราะบางและขึ้นอยู่กับลำดับ นอกจากนี้ โปรดทราบว่าฟังก์ชันนี้แตกต่างจากการแปลงค่าแอตทริบิวต์กฎจากรูปแบบภายในเป็น Starlark อีก 2 รูปแบบเล็กน้อย ได้แก่ รูปแบบที่ค่าเริ่มต้นที่คำนวณได้ใช้ และรูปแบบที่ ctx.attr.foo ใช้
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
name
|
สตริง;
ต้องระบุ ชื่อของเป้าหมาย |
existing_rules
unknown native.existing_rules()
existing_rule(name) จะแสดงผลในที่นี้ ออบเจ็กต์ที่คล้ายกับ dict ที่เปลี่ยนแปลงไม่ได้ หมายถึงออบเจ็กต์ x ที่เปลี่ยนแปลงไม่ได้อย่างลึกซึ้ง ซึ่งรองรับการทำซ้ำที่คล้ายกับ dict, len(x), name in x, x[name], x.get(name), x.items(), x.keys() และ x.values()
หากเป็นไปได้ ให้ใช้ฟังก์ชันนี้เฉพาะใน ฟังก์ชันการใช้งานของมาโครสัญลักษณ์ตัวสุดท้ายของกฎ เราไม่แนะนำให้ใช้ฟังก์ชันนี้ในบริบทอื่นๆ และระบบจะปิดใช้ฟังก์ชันนี้ใน Bazel เวอร์ชันที่จะเปิดตัวในอนาคต เนื่องจากฟังก์ชันนี้ทำให้ไฟล์ BUILD เปราะบางและขึ้นอยู่กับลำดับ
exports_files
None native.exports_files(srcs, visibility=None, licenses=None)พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
srcs
|
ลำดับของสตริงs;
ต้องระบุ รายการไฟล์ที่จะส่งออก |
visibility
|
ลำดับ หรือ None;
ค่าเริ่มต้นคือ Noneระบุการประกาศการมองเห็นได้ ไฟล์จะมองเห็นได้สำหรับเป้าหมายที่ระบุ หากไม่ได้ระบุการมองเห็นได้ ไฟล์จะมองเห็นได้สำหรับทุกแพ็กเกจ |
licenses
|
ลำดับของสตริงs; หรือNone;
ค่าเริ่มต้นคือNoneใบอนุญาตที่จะระบุ |
glob
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- ตรงกับรูปแบบอย่างน้อย 1 รูปแบบใน
include - ไม่ตรงกับรูปแบบใดๆ ใน
exclude(ค่าเริ่มต้นคือ[])
exclude_directories (ตั้งค่าเป็น 1) ระบบจะละเว้นไฟล์ประเภทไดเรกทอรีจากผลลัพธ์ (ค่าเริ่มต้นคือ 1)
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
include
|
ลำดับของสตริงs;
ค่าเริ่มต้นคือ[]รายการรูปแบบ glob ที่จะรวม |
exclude
|
ลำดับของสตริงs;
ค่าเริ่มต้นคือ[]รายการรูปแบบ glob ที่จะยกเว้น |
exclude_directories
|
จำนวนเต็ม;
ค่าเริ่มต้นคือ 1แฟล็กที่ระบุว่าจะยกเว้นไดเรกทอรีหรือไม่ |
allow_empty
|
ค่าเริ่มต้นคือ unboundระบุว่าจะอนุญาตให้รูปแบบ glob ไม่ตรงกับอะไรเลยหรือไม่ หาก `allow_empty` เป็น False รูปแบบการรวมแต่ละรูปแบบต้องตรงกับบางอย่าง และผลลัพธ์สุดท้ายต้องไม่ว่างเปล่า (หลังจากยกเว้นรายการที่ตรงกับรูปแบบ `exclude` แล้ว) |
module_name
string native.module_name()
module.name ที่เห็นใน module_ctx.modules
อาจแสดงผล None
module_version
string native.module_version()
module.version ที่เห็นใน module_ctx.modules
อาจแสดงผล None
package_default_visibility
List native.package_default_visibility()
default_visibility ของ package() ซึ่งขยายให้รวมแพ็กเกจเองด้วย
package_group
None native.package_group(*, name, packages=[], includes=[])visibility
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
name
|
สตริง;
ต้องระบุ ชื่อที่ไม่ซ้ำกันสำหรับกฎนี้ |
packages
|
ลำดับของสตริงs;
ค่าเริ่มต้นคือ[]การแจกแจงแพ็กเกจทั้งหมดในกลุ่มนี้ |
includes
|
ลำดับของสตริงs;
ค่าเริ่มต้นคือ[]กลุ่มแพ็กเกจอื่นๆ ที่รวมอยู่ในกลุ่มนี้ |
package_name
string native.package_name()
some/package/BUILD ค่าจะเป็น some/package หากไฟล์ BUILD เรียกใช้ฟังก์ชันที่กำหนดไว้ในไฟล์ .bzl package_name() จะตรงกับแพ็กเกจไฟล์ BUILD ของผู้เรียก ค่าจะเป็นสตริงว่างเสมอสำหรับแพ็กเกจรูท
package_relative_label
Label native.package_relative_label(input)
BUILD ที่มาโครปัจจุบันกำลังดำเนินการ) หากอินพุตเป็น Label อยู่แล้ว ระบบจะแสดงผลอินพุตนั้นโดยไม่มีการเปลี่ยนแปลงคุณจะเรียกใช้ฟังก์ชันนี้ได้ก็ต่อเมื่อกำลังประเมินไฟล์ BUILD และมาโครที่ไฟล์ BUILD เรียกใช้โดยตรงหรือโดยอ้อมเท่านั้น แต่จะเรียกใช้ในฟังก์ชันการใช้งานกฎ (เช่น) ไม่ได้
ผลลัพธ์ของฟังก์ชันนี้จะเป็นค่า Label เดียวกันกับที่จะได้จากการส่งสตริงที่ระบุไปยังแอตทริบิวต์ที่มีค่าเป็นป้ายกำกับของเป้าหมายที่ประกาศไว้ในไฟล์ BUILD
หมายเหตุเกี่ยวกับการใช้งาน: ฟังก์ชันนี้แตกต่างจาก Label() ตรงที่ Label() ใช้บริบทของแพ็กเกจของไฟล์ .bzl ที่เรียกใช้ ไม่ใช่แพ็กเกจของไฟล์ BUILD ให้ใช้ Label() เมื่อคุณต้องอ้างอิงเป้าหมายที่คงที่ซึ่งฮาร์ดโค้ดไว้ในมาโคร เช่น คอมไพเลอร์ ให้ใช้ package_relative_label() เมื่อคุณต้องทำให้สตริงป้ายกำกับที่ไฟล์ BUILD ระบุเป็นออบเจ็กต์ Label (ไม่มีวิธีแปลงสตริงเป็น Label ในบริบทของแพ็กเกจอื่นนอกเหนือจากไฟล์ BUILD หรือไฟล์ .bzl ที่เรียกใช้ ด้วยเหตุนี้ มาโครภายนอกจึงควรส่งออบเจ็กต์ป้ายกำกับไปยังมาโครภายในแทนสตริงป้ายกำเสมอ)ctx.package_relative_label() มีฟังก์ชันการทำงานเดียวกันภายในฟังก์ชันการใช้งานกฎหรือแง่มุม
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
input
|
สตริง หรือ ป้ายกำกับ;
ต้องระบุ สตริงป้ายกำกับหรือออบเจ็กต์ป้ายกำกับอินพุต หากมีการส่งออบเจ็กต์ป้ายกำกับ ระบบจะแสดงผลออบเจ็กต์นั้นตามที่เป็นอยู่ |
repo_name
string native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis เลิกใช้งานแล้ว เราขอแนะนำให้ใช้
repo_name แทน ซึ่งไม่มีเครื่องหมาย @ นำหน้าที่ไม่จำเป็น แต่ทำงานเหมือนกันในส่วนอื่นๆชื่อ Canonical ของที่เก็บที่มีแพ็กเกจที่กำลังประเมิน โดยมีเครื่องหมาย @ (@) นำหน้า 1 ตัว เช่น ในแพ็กเกจที่สร้างขึ้นโดยส่วน WORKSPACE local_repository(name='local', path=...) ค่านี้จะตั้งค่าเป็น @local ในแพ็กเกจในที่เก็บหลัก ค่านี้จะตั้งค่าเป็น @
subpackages
sequence native.subpackages(*, include, exclude=[], allow_empty=False)
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
include
|
ลำดับของสตริงs;
ต้องระบุ รายการรูปแบบ glob ที่จะรวมในการสแกนแพ็กเกจย่อย |
exclude
|
ลำดับของสตริงs;
ค่าเริ่มต้นคือ[]รายการรูปแบบ glob ที่จะยกเว้นจากการสแกนแพ็กเกจย่อย |
allow_empty
|
บูลีน;
ค่าเริ่มต้นคือ Falseระบุว่าจะแสดงข้อผิดพลาดหรือไม่หากการเรียกใช้แสดงผลรายการว่าง โดยค่าเริ่มต้น รายการว่างจะบ่งบอกถึงข้อผิดพลาดที่อาจเกิดขึ้นในไฟล์ BUILD ซึ่งการเรียกใช้ subpackages() ไม่จำเป็น การตั้งค่าเป็น "จริง" จะทำให้ฟังก์ชันนี้ทำงานได้ในกรณีดังกล่าว |