native.cc_library โปรดทราบว่าโมดูลเนทีฟจะพร้อมใช้งานในขั้นตอนการโหลดเท่านั้น (เช่น สำหรับมาโคร ไม่ใช่สำหรับการใช้งานกฎ) แอตทริบิวต์จะไม่สนใจค่า None และจะปฏิบัติต่อค่าเหล่านี้เสมือนว่าแอตทริบิวต์ไม่ได้ตั้งค่าฟังก์ชันต่อไปนี้พร้อมใช้งานด้วย
สมาชิก
- existing_rule
- existing_rules
- exports_files
- โลก
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- แพ็กเกจย่อย
existing_rule
unknown native.existing_rule(name)
None หากไม่มีอินสแตนซ์กฎของชื่อนั้นอยู่ในที่นี้ วัตถุที่มีลักษณะเหมือนคำสั่งเผด็จการหมายถึงออบเจ็กต์ที่เปลี่ยนแปลงไม่ได้อย่างหนัก x ซึ่งรองรับการทำซ้ำที่คล้ายกับคำสั่ง เผด็จการ, len(x), name in x, x[name], x.get(name), x.items(), x.keys() และ x.values()
หากตั้งค่าแฟล็ก --noincompatible_existing_rules_immutable_view ไว้ ระบบจะส่งคำสั่งที่เปลี่ยนแปลงได้ใหม่ซึ่งมีเนื้อหาเดียวกันแทน
ผลลัพธ์จะมีรายการสําหรับแอตทริบิวต์แต่ละรายการ ยกเว้นแอตทริบิวต์ส่วนตัว (ที่ชื่อไม่ได้ขึ้นต้นด้วยตัวอักษร) และแอตทริบิวต์เดิมบางประเภทที่ใช้ไม่ได้ นอกจากนี้ คำสั่งยังมีรายการสำหรับ name และ kind ของอินสแตนซ์กฎ (เช่น 'cc_binary')
ค่าของผลลัพธ์จะแสดงค่าแอตทริบิวต์ดังนี้
- แอตทริบิวต์ของประเภท str, int และ bool จะแสดงเป็นลักษณะ
- ป้ายกำกับถูกแปลงเป็นสตริงในรูปแบบ
':foo'สำหรับเป้าหมายในแพ็กเกจเดียวกัน หรือ'//pkg:name'สำหรับเป้าหมายในแพ็กเกจอื่น - โดยลิสต์จะแสดงเป็นแบบ Tuple และคำสั่งจะแปลงเป็นคำสั่งใหม่ที่เปลี่ยนแปลงได้ องค์ประกอบเหล่านั้นจะถูกแปลงซ้ำไปเรื่อยๆ แบบเดียวกัน
- ค่า
selectจะส่งกลับเมื่อมีการเปลี่ยนแปลงเนื้อหาตามที่อธิบายไว้ข้างต้น - แอตทริบิวต์ที่ไม่ได้ระบุค่าไว้ระหว่างการสร้างกฎและทำการคำนวณค่าเริ่มต้นจะไม่รวมอยู่ในผลลัพธ์ (ค่าเริ่มต้นที่คำนวณแล้วไม่สามารถคำนวณได้จนถึงระยะการวิเคราะห์)
หากเป็นไปได้ ให้หลีกเลี่ยงการใช้ฟังก์ชันนี้ ซึ่งทำให้ไฟล์ BUILD เปราะบางและขึ้นอยู่กับลำดับ นอกจากนี้ โปรดระวังว่า Conversion นี้แตกต่างจาก Conversion อีก 2 รายการของค่าแอตทริบิวต์กฎจากแบบฟอร์มภายในเป็น Starlark โดย Conversion แรกใช้โดยค่าเริ่มต้นที่คำนวณ อีกรายการจะใช้โดย ctx.attr.foo
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
name
|
ต้องระบุ ชื่อของเป้าหมาย |
existing_rules
unknown native.existing_rules()
existing_rule(name) จะแสดงในที่นี้ วัตถุที่มีลักษณะเหมือนคำสั่งเผด็จการหมายถึงออบเจ็กต์ที่เปลี่ยนแปลงไม่ได้อย่างหนัก x ซึ่งรองรับการทำซ้ำที่คล้ายกับคำสั่ง เผด็จการ, len(x), name in x, x[name], x.get(name), x.items(), x.keys() และ x.values()
หากตั้งค่าแฟล็ก --noincompatible_existing_rules_immutable_view ไว้ ระบบจะส่งคำสั่งที่เปลี่ยนแปลงได้ใหม่ซึ่งมีเนื้อหาเดียวกันแทน
หมายเหตุ: หากเป็นไปได้ ให้หลีกเลี่ยงการใช้ฟังก์ชันนี้ ซึ่งทำให้ไฟล์ BUILD เปราะบางและขึ้นอยู่กับลำดับ นอกจากนี้ หากตั้งค่า Flag --noincompatible_existing_rules_immutable_view ฟังก์ชันนี้อาจมีราคาแพงมาก โดยเฉพาะหากมีการเรียกใช้ภายในลูป
exports_files
None native.exports_files(srcs, visibility=None, licenses=None)
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
srcs
|
sequence of strings;
ต้องระบุรายการไฟล์ที่จะส่งออก |
visibility
|
sequence; or None;
ค่าเริ่มต้น = ไม่มีสามารถระบุการประกาศระดับการเข้าถึง ไฟล์จะปรากฏให้เป้าหมายที่ระบุ หากไม่ได้ระบุการเปิดเผย ไฟล์จะสามารถมองเห็นได้ในทุกแพ็กเกจ |
licenses
|
sequence of strings; or None;
ค่าเริ่มต้น = ไม่มีใบอนุญาตที่ต้องระบุ |
โลก
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- จับคู่รูปแบบอย่างน้อย 1 รายการใน
include - ไม่ตรงกับรูปแบบใดๆ ใน
exclude(ค่าเริ่มต้น[])
exclude_directories (ตั้งค่าเป็น 1) ไฟล์ของไดเรกทอรีประเภทจะไม่รวมอยู่ในผลลัพธ์ (ค่าเริ่มต้น 1)
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
include
|
sequence of strings;
ค่าเริ่มต้น = []รายการรูปแบบ glob ที่จะรวม |
exclude
|
sequence of strings;
ค่าเริ่มต้น = []รายการรูปแบบ glob ที่จะยกเว้น |
exclude_directories
|
ค่าเริ่มต้น = 1 แฟล็กว่าจะยกเว้นไดเรกทอรีหรือไม่ |
allow_empty
|
ค่าเริ่มต้น = ไม่เชื่อมโยง เราอนุญาตให้รูปแบบ glob ไม่จับคู่กับอะไรเลยหรือไม่ หาก "allow_เว้นว่าง" เป็น "เท็จ" รูปแบบที่รวมแต่ละรายการจะต้องตรงกับบางอย่าง และผลลัพธ์สุดท้ายต้องไม่ว่างเปล่า (หลังจากการจับคู่ของรูปแบบ "ยกเว้น" จะถูกยกเว้น) |
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_group
None native.package_group(name, packages=[], includes=[])
visibility
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
name
|
ต้องระบุ ชื่อที่ไม่ซ้ำกันของกฎนี้ |
packages
|
sequence of strings;
ค่าเริ่มต้น = []การแจงนับแพ็กเกจที่สมบูรณ์ในกลุ่มนี้ |
includes
|
sequence of strings;
ค่าเริ่มต้น = []กลุ่มแพ็กเกจอื่นๆ ที่รวมอยู่ในแพ็กเกจนี้ |
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 และมาโครที่เรียกใช้โดยตรงหรือโดยอ้อมเท่านั้น ซึ่งอาจไม่เรียกใช้ในฟังก์ชันการใช้งานกฎ (เป็นต้น)
ผลลัพธ์ของฟังก์ชันนี้คือค่า Label เดียวกับที่เกิดขึ้นโดยการส่งสตริงที่ระบุไปยังแอตทริบิวต์ที่มีค่าป้ายกำกับของเป้าหมายที่ประกาศในไฟล์ BUILD
หมายเหตุการใช้งาน: ความแตกต่างระหว่างฟังก์ชันนี้และ Label() คือ Label() จะใช้บริบทของแพ็กเกจของไฟล์ .bzl ที่เรียกใช้ฟังก์ชันนี้ ไม่ใช่แพ็กเกจของไฟล์ BUILD ใช้ Label() เมื่อต้องอ้างอิงเป้าหมายแบบคงที่ซึ่งมีการฮาร์ดโค้ดไว้ในมาโคร เช่น คอมไพเลอร์ ใช้ package_relative_label() เมื่อคุณต้องทำให้สตริงป้ายกำกับที่ระบุโดยไฟล์ BUILD เป็นออบเจ็กต์ Label ให้เป็นมาตรฐาน (ไม่มีวิธีแปลงสตริงเป็น Label ในบริบทของแพ็กเกจนอกเหนือจากไฟล์ BUILD หรือไฟล์ .bzl การเรียกใช้ ด้วยเหตุนี้ มาโครด้านนอกจึงควรส่งออบเจ็กต์ป้ายกำกับไปยังมาโครภายในมากกว่าสตริงป้ายกำกับ)
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
input
|
string; or Label;
ต้องระบุสตริงป้ายกำกับอินพุตหรือออบเจ็กต์ป้ายกำกับ หากมีการส่งผ่านออบเจ็กต์ป้ายกำกับ จะส่งกลับตามที่เป็น |
repo_name
string native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis เลิกใช้งาน เลือกใช้
repo_name แทน ซึ่งไม่มีเครื่องหมาย @ ที่ไม่ถูกต้อง แต่มีการทำงานเหมือนกันทุกประการชื่อ Canonical ของที่เก็บซึ่งมีแพ็กเกจที่กำลังประเมินอยู่ โดยมีเครื่องหมาย @ เดียว (@) นำหน้า ตัวอย่างเช่น ในแพ็กเกจที่เรียกใช้โดยข้อความ WORKSPACE local_repository(name='local', path=...) จะตั้งค่าเป็น @local ในแพ็กเกจในที่เก็บหลัก ระบบจะตั้งค่าเป็น @
แพ็กเกจย่อย
sequence native.subpackages(include, exclude=[], allow_empty=False)
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
include
|
sequence of strings;
ต้องระบุรายการรูปแบบ glob ที่จะรวมไว้ในการสแกนแพ็กเกจย่อย |
exclude
|
sequence of strings;
ค่าเริ่มต้น = []การสแกนรายการรูปแบบ glob ที่จะยกเว้นจากแพ็กเกจย่อย |
allow_empty
|
ค่าเริ่มต้น = เท็จ ดูว่าเราจะล้มเหลวหรือไม่หากการโทรส่งคืนรายการที่ว่างเปล่า โดยค่าเริ่มต้น รายการที่ว่างเปล่าจะบ่งชี้ถึงข้อผิดพลาดที่อาจเกิดขึ้นในไฟล์ BUILD ซึ่งการเรียกไปยังแพ็กเกจย่อย() สูงมาก การตั้งค่าเป็น "จริง" จะช่วยให้ฟังก์ชันนี้ดำเนินการสำเร็จในกรณีนั้นได้ |