กฎ Objective-C

วันที่ รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

กฎ

j2objc_library

ดูแหล่งที่มาของกฎ
j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

กฎนี้ใช้ J2ObjC เพื่อแปลซอร์สของ Java ไปยัง Objective-C ซึ่งจะสามารถใช้เป็นทรัพยากร Dependency ของ objc_library และ objc_binary กฎ คุณสามารถดูข้อมูลโดยละเอียดเกี่ยวกับ J2ObjC ได้ที่ เว็บไซต์ J2ObjC

สามารถระบุแฟล็กรูปแบบ J2ObjC ที่กำหนดเองได้โดยใช้แฟล็กบิลด์ --j2objc_translation_flags ในบรรทัดคำสั่ง

โปรดทราบว่าไฟล์ที่แปลแล้วซึ่งรวมอยู่ในเป้าหมาย j2objc_library จะ คอมไพล์โดยใช้การกำหนดค่าการคอมไพล์เริ่มต้น ซึ่งมีการกำหนดค่าเดียวกันกับแหล่งที่มาของ กฎ objc_library ที่ไม่มีตัวเลือกการรวบรวมที่ระบุในแอตทริบิวต์

นอกจากนี้ ระบบจะกรองโค้ดที่สร้างขึ้นที่ซ้ำกันออกที่ระดับเป้าหมาย ไม่ใช่ระดับแหล่งที่มา ถ้าคุณมี 2 แบบ เป้าหมาย Java ต่างๆ ที่มีไฟล์แหล่งที่มา Java เดียวกัน คุณอาจเห็นข้อผิดพลาดเกี่ยวกับสัญลักษณ์ที่ซ้ำกัน ที่เวลาของลิงก์ วิธีที่ถูกต้องในการแก้ไขปัญหานี้คือย้ายไฟล์ที่มา Java ที่ใช้ร่วมกันไปยัง เป้าหมายร่วมที่พึ่งพิงได้

อาร์กิวเมนต์

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้

deps

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการ j2objc_library, java_library เป้าหมาย java_import และ java_proto_library ที่มี ไฟล์ Java ที่จะแปลงเป็น Objective-C

เป้าหมาย java_library และ java_import ทั้งหมดที่ทำได้ เปลี่ยนผ่าน exports, deps และ runtime_deps จะได้รับการแปลและคอมไพล์ รวมถึงไฟล์ที่สร้างจากการประมวลผลคำอธิบายประกอบ Java ไม่รองรับเป้าหมายโค้ด>java_import ที่ไม่มี srcjar ที่ระบุ

การแปล J2ObjC ทำงานแตกต่างกันไปตามประเภทของซอร์ส Java ต้นฉบับ ไฟล์ที่รวมอยู่ในการปิดแบบทรานซิทีฟ สำหรับไฟล์ต้นฉบับ .java ไฟล์ที่รวมอยู่ใน srcs จาก java_library ซึ่งเป็นไฟล์ต้นฉบับ .h และ .m ที่เกี่ยวข้อง จะสร้างขึ้น สำหรับ Jar แหล่งที่มาแต่ละรายการที่รวมอยู่ใน srcs ของ java_library หรือ srcjar จาก java_import ระบบจะสร้างไฟล์ต้นฉบับ .h และ .m ที่เกี่ยวข้องด้วยโค้ดทั้งหมดสำหรับ jar นั้น

ผู้ใช้จะนำเข้าไฟล์ส่วนหัวที่ J2ObjC สร้างขึ้นในโค้ดได้ เส้นทางการนำเข้าสำหรับ ไฟล์เหล่านี้เป็นเส้นทางที่สัมพันธ์กับรูทของอาร์ติแฟกต์ Java ดั้งเดิม ตัวอย่างเช่น //some/package/foo.java มีเส้นทางการนำเข้าเป็น some/package/foo.h และ //some/package/bar.srcjar มีsome/package/bar.h

หากกฎ protocol_library อยู่ระหว่างการปิดแบบทรานซิทีฟของกฎนี้ โปรโตคอล J2ObjC จะ สร้างขึ้น คอมไพล์ และเชื่อมโยงกันที่ระดับไบนารี สำหรับ Proto //some/proto/foo.proto ผู้ใช้สามารถอ้างอิงโค้ดที่สร้างขึ้นโดยใช้การนำเข้า เส้นทาง some/proto/foo.j2objc.pb.h

entry_classes

รายการสตริง ค่าเริ่มต้นคือ []

รายการคลาส Java ที่คู่ ObjC ที่แปลแล้วจะอ้างอิงโดยตรง ตามรหัส ObjC ของผู้ใช้ ต้องใช้แอตทริบิวต์นี้หากแฟล็ก --j2objc_dead_code_removal เปิดอยู่ คลาส Java ควรมีการระบุไว้ในชื่อตามรูปแบบบัญญัติตามที่กำหนดโดย Java ข้อกำหนดภาษา เมื่อระบุ Flag --j2objc_dead_code_removal ระบบจะแสดงรายการคลาสของรายการ จะถูกเก็บแบบทันทีและใช้เป็นจุดแรกเข้าเพื่อทำการวิเคราะห์โค้ดที่ใช้งานไม่ได้ จากนั้นคลาสที่ไม่ได้ใช้งานจะถูกนำออกจาก App Bundle ของ ObjC
jre_deps

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการไลบรารีการจำลอง JRE เพิ่มเติมที่จำเป็นสำหรับโค้ด Java ทั้งหมดที่แปลโดยค่านี้ กฎ j2objc_library ข้อ มีเพียงฟังก์ชันหลักของ JRE เท่านั้นที่ลิงก์โดยค่าเริ่มต้น

objc_import

ดูแหล่งที่มาของกฎ
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, features, includes, licenses, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, visibility, weak_sdk_frameworks)

กฎนี้สรุปไลบรารีแบบคงที่ซึ่งรวบรวมไว้แล้วในรูปแบบ .a ไฟล์ นอกจากนี้ยังช่วยให้ส่งออกส่วนหัวและทรัพยากรโดยใช้ แอตทริบิวต์ที่ objc_library รองรับ

อาร์กิวเมนต์

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้

deps

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการของเป้าหมายที่เป้าหมายนี้ใช้อยู่
hdrs

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

เผยแพร่รายการไฟล์ส่วนหัว C, C++, Objective-C และ Objective-C++ โดยไลบรารีนี้ที่จะรวมโดยแหล่งที่มาในกฎที่ไม่อ้างอิง

ส่วนหัวเหล่านี้อธิบายถึงอินเทอร์เฟซสาธารณะสำหรับไลบรารี และจะ เปิดให้รวมโดยแหล่งที่มาในกฎนี้หรือตามกฎที่เกี่ยวข้อง กฎ ส่วนหัวที่ไคลเอ็นต์ของไลบรารีนี้ไม่ได้ให้รวมไว้ ควรแสดงในแอตทริบิวต์ srcs แทน

ระบบจะคอมไพล์เหล่านี้แยกต่างหากจากแหล่งที่มาหากมีการเปิดใช้โมดูล

บูลีน ค่าเริ่มต้นคือ False

หากเป็น 1 จะมี Bundle หรือไบนารีใดที่เกี่ยวข้อง (ทั้งทางตรงและทางอ้อม) เกี่ยวกับเรื่องนี้ Library จะเชื่อมโยงในไฟล์ออบเจ็กต์ทั้งหมดของไฟล์ที่แสดงอยู่ใน srcs และ non_arc_srcs แม้ว่าบางรายการจะไม่มี สัญลักษณ์ที่ไบนารีอ้างอิง วิธีนี้มีประโยชน์หากโค้ดของคุณไม่ได้ถูกเรียกอย่างชัดแจ้งด้วยโค้ดใน ไบนารี เช่น หากโค้ดของคุณลงทะเบียนเพื่อให้รับการเรียกกลับ ที่ให้บริการโดยบางบริการ
archives

รายการป้ายกำกับ ต้องระบุ

รายการไฟล์ .a รายการที่ระบุให้กับ Objective-C เป้าหมายที่ ขึ้นอยู่กับเป้าหมายนี้
includes

รายการสตริง ค่าเริ่มต้นคือ []

รายการเส้นทางการค้นหา #include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้ และทั้งหมดขึ้นอยู่กับเป้าหมาย เพื่อรองรับไลบรารีของบุคคลที่สามและไลบรารีแบบโอเพนซอร์สที่ไม่ ระบุเส้นทางของพื้นที่ทำงานทั้งหมด ใบแจ้งยอด #import/#include รายการ

ระบบจะแปลเส้นทางซึ่งสัมพันธ์กับไดเรกทอรีแพ็กเกจ และ Genfiles และ bin Roots (เช่น blaze-genfiles/pkg/includedir และ blaze-out/pkg/includedir) รวมอยู่ในคอลัมน์ รากลูกค้าที่แท้จริง

กฎนี้ต่างจาก COPTS ตรงที่เพิ่มแฟล็กเหล่านี้ และทุกกฎที่เกี่ยวข้อง (หมายเหตุ: ไม่ใช่กฎเกณฑ์แต่อย่างใด) เป็น ระมัดระวังให้มาก เนื่องจากอาจส่งผลกระทบเป็นวงกว้าง หากไม่แน่ใจ ให้เพิ่ม "-iquote" แจ้งว่าเป็น COPTS แทน

sdk_dylibs

รายการสตริง ค่าเริ่มต้นคือ []

ชื่อของไลบรารี SDK .dylib ที่จะลิงก์ด้วย เช่น "libz" หรือ "libarchive" "libc++" รวมโดยอัตโนมัติหากไบนารีมี C++ หรือ แหล่งที่มาของ Objective-C++ ในแผนผัง Dependency เมื่อลิงก์ไบนารี ไลบรารีทั้งหมดที่มีชื่ออยู่ในกราฟ Dependency แบบทรานซิทีฟของไบนารีนั้น ที่ใช้
sdk_frameworks

รายการสตริง ค่าเริ่มต้นคือ []

ชื่อของเฟรมเวิร์ก SDK ที่จะลิงก์ด้วย (เช่น "AddressBook", "QuartzCore") "UIKit" และ "การก่อตั้ง" จะรวมอยู่ด้วยเสมอเมื่อสร้างสำหรับ iOS, tvOS, visionOS และแพลตฟอร์ม WatchOS สำหรับ macOS ระบบจะแสดงเฉพาะ "พื้นฐาน" รวมอยู่ด้วยเสมอ

เมื่อลิงก์ไบนารีของ Apple ระดับบนสุด เฟรมเวิร์ก SDK ทั้งหมดที่แสดงอยู่ในไบนารีนั้น ลิงก์กราฟการขึ้นต่อกันแบบสับเปลี่ยนแล้ว

sdk_includes

รายการสตริง ค่าเริ่มต้นคือ []

รายการเส้นทางการค้นหา #include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้ และทั้งหมดขึ้นอยู่กับเป้าหมาย โดยที่แต่ละเส้นทางสัมพันธ์กับ $(SDKROOT)/usr/include
textual_hdrs

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการไฟล์ C, C++, Objective-C และ Objective-C++ ที่ รวมเป็นส่วนหัวตามไฟล์ต้นฉบับในกฎนี้หรือโดยผู้ใช้ ไลบรารี สิ่งเหล่านี้จะไม่ถูกคอมไพล์แยกต่างหากจาก แหล่งที่มา
weak_sdk_frameworks

รายการสตริง ค่าเริ่มต้นคือ []

ชื่อของเฟรมเวิร์ก SDK ที่จะลิงก์ด้วยเล็กน้อย ตัวอย่างเช่น "MediaAccessibility" สัญลักษณ์ในความแตกต่างกับเฟรมเวิร์ก SDK ที่ลิงก์เป็นประจำ จากเฟรมเวิร์กที่มีการเชื่อมโยงที่ไม่ปลอดภัย จะไม่ก่อให้เกิดข้อผิดพลาดหาก จะไม่ปรากฏในรันไทม์

objc_library

ดูแหล่งที่มาของกฎ
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, implementation_deps, includes, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

กฎนี้สร้างไลบรารีแบบคงที่จากไฟล์ต้นฉบับ Objective-C ที่ระบุ

อาร์กิวเมนต์

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้

deps

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการเป้าหมายที่เชื่อมโยงเข้าด้วยกันเพื่อสร้างกลุ่มสุดท้าย
srcs

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการแหล่งที่มาและส่วนหัวของ C, C++, Objective-C และ Objective-C++ ไฟล์ และ/หรือ (".s", ".S" หรือ ".asm") ไฟล์ต้นฉบับที่ได้รับการประมวลผลเพื่อสร้าง เป้าหมายไลบรารี ไฟล์เหล่านี้คือไฟล์ที่เช็คอินของคุณ รวมถึงไฟล์ที่สร้างขึ้น ไฟล์ต้นฉบับจะรวมเข้าด้วยกันเป็นไฟล์ .o ด้วย Clang ไฟล์ส่วนหัว อาจรวม/นำเข้าโดยแหล่งที่มาหรือส่วนหัวใดๆ ในแอตทริบิวต์ srcs ของเป้าหมายนี้ แต่ไม่ใช่ตามส่วนหัวเป็น hdr หรือเป้าหมายใดๆ ที่ขึ้นอยู่กับ เกี่ยวกับกฎนี้ นอกจากนี้ ยังอาจระบุไฟล์ .o ที่คอมไพล์ไว้ล่วงหน้าเป็น src ได้ด้วย โปรดระมัดระวัง เพื่อให้มั่นใจว่าสถาปัตยกรรมของไฟล์ .o ที่ระบุ และของ เพื่อหลีกเลี่ยงข้อผิดพลาดตัวลิงก์สัญลักษณ์ที่ขาดหายไป
hdrs

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

เผยแพร่รายการไฟล์ส่วนหัว C, C++, Objective-C และ Objective-C++ โดยไลบรารีนี้ที่จะรวมโดยแหล่งที่มาในกฎที่ไม่อ้างอิง

ส่วนหัวเหล่านี้อธิบายถึงอินเทอร์เฟซสาธารณะสำหรับไลบรารี และจะ เปิดให้รวมโดยแหล่งที่มาในกฎนี้หรือตามกฎที่เกี่ยวข้อง กฎ ส่วนหัวที่ไคลเอ็นต์ของไลบรารีนี้ไม่ได้ให้รวมไว้ ควรแสดงในแอตทริบิวต์ srcs แทน

ระบบจะคอมไพล์เหล่านี้แยกต่างหากจากแหล่งที่มาหากมีการเปิดใช้โมดูล

บูลีน ค่าเริ่มต้นคือ False

หากเป็น 1 จะมี Bundle หรือไบนารีใดที่เกี่ยวข้อง (ทั้งทางตรงและทางอ้อม) เกี่ยวกับเรื่องนี้ Library จะเชื่อมโยงในไฟล์ออบเจ็กต์ทั้งหมดของไฟล์ที่แสดงอยู่ใน srcs และ non_arc_srcs แม้ว่าบางรายการจะไม่มี สัญลักษณ์ที่ไบนารีอ้างอิง วิธีนี้มีประโยชน์หากโค้ดของคุณไม่ได้ถูกเรียกอย่างชัดแจ้งด้วยโค้ดใน ไบนารี เช่น หากโค้ดของคุณลงทะเบียนเพื่อให้รับการเรียกกลับ ที่ให้บริการโดยบางบริการ
copts

รายการสตริง ค่าเริ่มต้นคือ []

แฟล็กเพิ่มเติมที่จะส่งผ่านไปยังคอมไพเลอร์ ขึ้นอยู่กับการแทนที่ "Makeตัวแปร" และ การแปลงข้อมูลเป็นโทเค็นของ Bourne Shell ค่าสถานะเหล่านี้จะใช้กับเป้าหมายนี้เท่านั้น และจะไม่มีผลกับเป้าหมาย แล้วแต่กรณี

โปรดทราบว่าเส้นทางไดเรกทอรีที่ระบุโดยใช้ "-I" สำหรับโปรเจ็กต์ Xcode ที่สร้างขึ้น ธงใน มีการแยกวิเคราะห์บรรทัดแรก โดยเพิ่ม "$(WORKSPACE_ROOT)/" ไว้ข้างหน้า หากเป็นเส้นทางแบบสัมพัทธ์ และ เพิ่มไปยังเส้นทางการค้นหาส่วนหัวสำหรับเป้าหมาย Xcode ที่เชื่อมโยง

defines

รายการสตริง ค่าเริ่มต้นคือ []

แฟล็ก -D เพิ่มเติมที่จะส่งผ่านไปยังคอมไพเลอร์ ควรอยู่ใน แบบฟอร์ม KEY=VALUE หรือเพียง KEY และ ไม่ได้ส่งผ่านไปยังคอมไพเลอร์สำหรับเป้าหมายนี้เท่านั้น (เป็น copts ) แต่รวมถึงทรัพยากร Dependency ทั้งหมดของ objc_ ของเป้าหมายนี้ ขึ้นอยู่กับการแทนที่ "Makeตัวแปร" และ การแปลงข้อมูลเป็นโทเค็นของ Bourne Shell
enable_modules

บูลีน ค่าเริ่มต้นคือ False

เปิดใช้การสนับสนุนโมดูลคำซ้ำ (ผ่าน -fmodules) การตั้งค่าเป็น 1 จะช่วยให้คุณ @นำเข้าส่วนหัวของระบบและเป้าหมายอื่นๆ ได้ @import UIKit; @นำเข้า path_to_package_target;
implementation_deps

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการของไลบรารีอื่นๆ ที่เป้าหมายไลบรารีอิงตาม ต่างจาก deps ส่วนหัว และระบุเส้นทางของไลบรารีเหล่านี้ (รวมถึงเส้นทางทั้งหมดของไลบรารี deps สับเปลี่ยน) จะใช้สำหรับการรวบรวมไลบรารีนี้เท่านั้น ไม่รวมถึงไลบรารีที่ ต้องพึ่งพาสิ่งนั้น คลังที่ระบุด้วย implementation_deps ยังคงลิงก์อยู่ ในเป้าหมายไบนารีที่ขึ้นอยู่กับไลบรารีนี้
includes

รายการสตริง ค่าเริ่มต้นคือ []

รายการเส้นทางการค้นหา #include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้ และทั้งหมดขึ้นอยู่กับเป้าหมาย เพื่อรองรับไลบรารีของบุคคลที่สามและไลบรารีแบบโอเพนซอร์สที่ไม่ ระบุเส้นทางของพื้นที่ทำงานทั้งหมด ใบแจ้งยอด #import/#include รายการ

ระบบจะแปลเส้นทางซึ่งสัมพันธ์กับไดเรกทอรีแพ็กเกจ และ Genfiles และ bin Roots (เช่น blaze-genfiles/pkg/includedir และ blaze-out/pkg/includedir) รวมอยู่ในคอลัมน์ รากลูกค้าที่แท้จริง

กฎนี้ต่างจาก COPTS ตรงที่เพิ่มแฟล็กเหล่านี้ และทุกกฎที่เกี่ยวข้อง (หมายเหตุ: ไม่ใช่กฎเกณฑ์แต่อย่างใด) เป็น ระมัดระวังให้มาก เนื่องจากอาจส่งผลกระทบเป็นวงกว้าง หากไม่แน่ใจ ให้เพิ่ม "-iquote" แจ้งว่าเป็น COPTS แทน

linkopts

รายการสตริง ค่าเริ่มต้นคือ []

แฟล็กเพิ่มเติมสำหรับส่งผ่านไปยัง Linker
module_map

ป้ายกำกับ ค่าเริ่มต้นคือ None

แมปโมดูล Clang ที่กำหนดเองของเป้าหมายนี้ เราไม่แนะนำให้ใช้แผนที่โมดูลที่กำหนดเอง พบบ่อยที่สุด ผู้ใช้ควรใช้แผนที่โมดูลที่สร้างโดย Bazel หากระบุไว้ Bazel จะไม่สร้างแมปโมดูลสำหรับเป้าหมายนี้ แต่จะส่งผ่าน ที่ให้แมปโมดูลกับคอมไพเลอร์
module_name

String; ค่าเริ่มต้นคือ ""

ตั้งชื่อโมดูลสำหรับเป้าหมายนี้ โดยค่าเริ่มต้น ชื่อโมดูลจะเป็นเส้นทางเป้าหมายที่มี สัญลักษณ์พิเศษทั้งหมดที่แทนที่ด้วย _ เช่น //foo/baz:bar สามารถนำเข้าเป็น foo_baz_bar
non_arc_srcs

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการไฟล์ Objective-C ที่ได้รับการประมวลผลเพื่อสร้าง เป้าหมายไลบรารีที่ไม่ได้ใช้ ARC ไฟล์ในแอตทริบิวต์นี้จะคล้ายกับไฟล์ใน srcs แต่คอมไพล์โดยไม่ได้เปิดใช้ ARC
pch

ป้ายกำกับ ค่าเริ่มต้นคือ None

ไฟล์ส่วนหัวเพื่อเพิ่มไว้ข้างหน้าไฟล์ต้นฉบับทุกๆ ไฟล์ที่มีการคอมไพล์ (ทั้ง 2 โค้ง และไม่มีส่วนโค้ง) ไม่สนับสนุนให้ใช้ไฟล์ PCH ในไฟล์ BUILD อย่างต่อเนื่อง ซึ่งควร ถือว่าเลิกใช้งานแล้ว เนื่องจากไฟล์ pch ไม่ได้ เป็นคอมไพล์ไว้ล่วงหน้า จึงไม่ใช่ การปรับปรุงความเร็วของบิลด์ และเป็นเพียงการพึ่งพากันทั่วโลก จากบิลด์ ในด้านประสิทธิภาพประสิทธิภาพ คุณจะดียิ่งขึ้น เมื่อรวมสิ่งที่คุณต้องการไว้โดยตรง ในแหล่งที่มาที่ต้องการ
sdk_dylibs

รายการสตริง ค่าเริ่มต้นคือ []

ชื่อของไลบรารี SDK .dylib ที่จะลิงก์ด้วย เช่น "libz" หรือ "libarchive" "libc++" รวมโดยอัตโนมัติหากไบนารีมี C++ หรือ แหล่งที่มาของ Objective-C++ ในแผนผัง Dependency เมื่อลิงก์ไบนารี ไลบรารีทั้งหมดที่มีชื่ออยู่ในกราฟ Dependency แบบทรานซิทีฟของไบนารีนั้น ที่ใช้
sdk_frameworks

รายการสตริง ค่าเริ่มต้นคือ []

ชื่อของเฟรมเวิร์ก SDK ที่จะลิงก์ด้วย (เช่น "AddressBook", "QuartzCore") "UIKit" และ "การก่อตั้ง" จะรวมอยู่ด้วยเสมอเมื่อสร้างสำหรับ iOS, tvOS, visionOS และแพลตฟอร์ม WatchOS สำหรับ macOS ระบบจะแสดงเฉพาะ "พื้นฐาน" รวมอยู่ด้วยเสมอ

เมื่อลิงก์ไบนารีของ Apple ระดับบนสุด เฟรมเวิร์ก SDK ทั้งหมดที่แสดงอยู่ในไบนารีนั้น ลิงก์กราฟการขึ้นต่อกันแบบสับเปลี่ยนแล้ว

sdk_includes

รายการสตริง ค่าเริ่มต้นคือ []

รายการเส้นทางการค้นหา #include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้ และทั้งหมดขึ้นอยู่กับเป้าหมาย โดยที่แต่ละเส้นทางสัมพันธ์กับ $(SDKROOT)/usr/include
textual_hdrs

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการไฟล์ C, C++, Objective-C และ Objective-C++ ที่ รวมเป็นส่วนหัวตามไฟล์ต้นฉบับในกฎนี้หรือโดยผู้ใช้ ไลบรารี สิ่งเหล่านี้จะไม่ถูกคอมไพล์แยกต่างหากจาก แหล่งที่มา
weak_sdk_frameworks

รายการสตริง ค่าเริ่มต้นคือ []

ชื่อของเฟรมเวิร์ก SDK ที่จะลิงก์ด้วยเล็กน้อย ตัวอย่างเช่น "MediaAccessibility" สัญลักษณ์ในความแตกต่างกับเฟรมเวิร์ก SDK ที่ลิงก์เป็นประจำ จากเฟรมเวิร์กที่มีการเชื่อมโยงที่ไม่ปลอดภัย จะไม่ก่อให้เกิดข้อผิดพลาดหาก จะไม่ปรากฏในรันไทม์

available_xcodes

ดูแหล่งที่มาของกฎ
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

อินสแตนซ์ของกฎ xcode_config ขึ้นอยู่กับเป้าหมาย 2 ข้อของกฎนี้เพื่อ ระบุเวอร์ชัน xcode ที่พร้อมใช้งานจากระยะไกลและในเครื่อง ซึ่งจะช่วยให้เลือกเวอร์ชัน xcode อย่างเป็นทางการจาก xcode ที่มีร่วมกันได้

อาร์กิวเมนต์

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้

default

ป้ายกำกับ nonconfigurable; ต้องระบุ

เวอร์ชัน xcode เริ่มต้นสำหรับแพลตฟอร์มนี้
versions

รายการป้ายกำกับ nonconfigurable; ค่าเริ่มต้นคือ []

เวอร์ชัน xcode ที่พร้อมใช้งานบนแพลตฟอร์มนี้

xcode_config

ดูแหล่งที่มาของกฎ
xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

บิลด์ --xcode_version_config อ้างอิงเป้าหมายเดียวของกฎนี้ได้ Flag เพื่อแปลแฟล็ก --xcode_version เป็นเวอร์ชัน xcode อย่างเป็นทางการที่ยอมรับ ซึ่งจะทำให้เลือกเวอร์ชัน xcode อย่างเป็นทางการจากนามแฝงที่ลงทะเบียนจำนวนหนึ่งได้

อาร์กิวเมนต์

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้

default

ป้ายกำกับ nonconfigurable; ค่าเริ่มต้นคือ None

xcode เวอร์ชันอย่างเป็นทางการเริ่มต้นที่จะใช้ เวอร์ชันที่ระบุโดยเป้าหมาย xcode_version ที่ระบุจะใช้ในกรณีต่อไปนี้ ไม่ได้ระบุแฟล็กบิลด์ xcode_version ต้องระบุข้อมูลนี้หากมี ตั้งค่าversionsแล้ว อาจไม่ได้ตั้งค่านี้หาก remote_versions หรือ ตั้งค่า local_versions แล้ว
local_versions

ป้ายกำกับ nonconfigurable; ค่าเริ่มต้นคือ None

เป้าหมาย xcode_version ที่ใช้ได้ภายในเครื่อง รายการเหล่านี้ใช้พร้อมกับ local_versions เพื่อเลือกตัวเลือกที่พร้อมใช้งานร่วมกัน เวอร์ชัน ระบบอาจตั้งค่านี้ไม่ได้หากตั้งค่า versions ไว้
remote_versions

ป้ายกำกับ nonconfigurable; ค่าเริ่มต้นคือ None

เป้าหมาย xcode_version ที่พร้อมใช้งานจากระยะไกล รายการเหล่านี้ใช้พร้อมกับ remote_versions เพื่อเลือกตัวเลือกที่พร้อมใช้งานร่วมกัน เวอร์ชัน ระบบอาจตั้งค่านี้ไม่ได้หากตั้งค่า versions ไว้
versions

รายการป้ายกำกับ nonconfigurable; ค่าเริ่มต้นคือ []

ยอมรับ xcode_version เป้าหมายที่สามารถนำไปใช้ หากค่าของแฟล็กบิลด์ xcode_version ตรงกับหนึ่งในชื่อแทน หรือหมายเลขเวอร์ชันของเป้าหมาย xcode_version ที่ระบุ การจับคู่ที่ตรงกัน จะมีการใช้เป้าหมาย อาจไม่ได้ตั้งค่านี้หาก remote_versions หรือ ตั้งค่า local_versions แล้ว

xcode_version

ดูแหล่งที่มาของกฎ
xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_visionos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)

แสดงเวอร์ชัน xcode อย่างเป็นทางการเวอร์ชันเดียวที่มีชื่อแทนที่ยอมรับได้สำหรับ xcode เวอร์ชันนั้น ดูกฎ xcode_config

อาร์กิวเมนต์

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้

default_ios_sdk_version

String; nonconfigurable; ค่าเริ่มต้นคือ ""

เวอร์ชัน SDK ของ iOS ที่ใช้โดยค่าเริ่มต้นเมื่อมีการใช้ xcode เวอร์ชันนี้ แฟล็กบิลด์ ios_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
default_macos_sdk_version

String; nonconfigurable; ค่าเริ่มต้นคือ ""

เวอร์ชัน SDK ของ Macosx ที่ใช้โดยค่าเริ่มต้นเมื่อมีการใช้ xcode เวอร์ชันนี้ แฟล็กบิลด์ macos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
default_tvos_sdk_version

String; nonconfigurable; ค่าเริ่มต้นคือ ""

เวอร์ชัน SDK ของ Tvos ที่ใช้โดยค่าเริ่มต้นเมื่อมีการใช้ xcode เวอร์ชันนี้ แฟล็กบิลด์ tvos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
default_visionos_sdk_version

String; nonconfigurable; ค่าเริ่มต้นคือ ""

เวอร์ชัน SDK ของ Vision ที่ใช้โดยค่าเริ่มต้นเมื่อมีการใช้ xcode เวอร์ชันนี้ แฟล็กบิลด์ visionos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
default_watchos_sdk_version

String; nonconfigurable; ค่าเริ่มต้นคือ ""

เวอร์ชัน SDK ของ Watchos ที่ใช้โดยค่าเริ่มต้นเมื่อมีการใช้ xcode เวอร์ชันนี้ แฟล็กบิลด์ watchos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
version

String; nonconfigurable; ต้องระบุ

หมายเลขเวอร์ชันอย่างเป็นทางการของ Xcode เวอร์ชัน