กฎ Objective-C

รายงานปัญหา ดูแหล่งที่มา Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

กฎ

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

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

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

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

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

Attributes
name

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

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

deps

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

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

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

การแปล J2ObjC จะทำงานแตกต่างกันไปตามประเภทของไฟล์ต้นฉบับ Java ที่รวมอยู่ใน Closure แบบทรานซิทีฟ สำหรับไฟล์ต้นฉบับ .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

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

entry_classes

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

รายการคลาส Java ที่โค้ด ObjC ของผู้ใช้จะอ้างอิงถึงโดยตรง ต้องระบุแอตทริบิวต์นี้หากเปิดค่าสถานะ --j2objc_dead_code_removal ควรกำหนดคลาส Java ในชื่อที่ถูกต้องตามที่กำหนดโดยข้อกำหนดภาษา Java เมื่อระบุแฟล็ก --j2objc_dead_code_removal ระบบจะรวบรวมรายการคลาสรายการ แบบทรานซิทีฟและใช้เป็นจุดแรกเข้าเพื่อทำการวิเคราะห์โค้ดที่ไม่ได้ใช้ จากนั้นระบบจะนำคลาสที่ไม่ได้ใช้ออกจากแพ็กเกจแอป 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

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

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

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

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

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

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

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

sdk_dylibs

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

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

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

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

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

sdk_includes

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

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

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

รายการไฟล์ C, C++, Objective-C และ Objective-C++ ที่ รวมเป็นส่วนหัวโดยไฟล์ต้นฉบับในกฎนี้หรือโดยผู้ใช้ ไลบรารีนี้ ซึ่งต่างจาก hdrs ตรงที่ระบบจะไม่คอมไพล์ไฟล์เหล่านี้แยกจาก แหล่งที่มา
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 ของเป้าหมายนี้ แต่ไม่ใช่โดยส่วนหัวใน hdrs หรือเป้าหมายใดๆ ที่ขึ้นอยู่กับ กฎนี้ นอกจากนี้ คุณยังระบุไฟล์ .o ที่คอมไพล์ล่วงหน้าเป็น srcs ได้ด้วย โปรดระมัดระวัง เพื่อให้สถาปัตยกรรมของไฟล์ .o ที่ระบุมีความสอดคล้องกับสถาปัตยกรรมของ บิลด์เพื่อหลีกเลี่ยงข้อผิดพลาดของ Linker ที่ไม่มีสัญลักษณ์
hdrs

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

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

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

ระบบจะรวบรวมข้อมูลเหล่านี้แยกจากแหล่งที่มาหากเปิดใช้โมดูล

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

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

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

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

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

defines

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

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

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

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

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

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

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

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

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

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

linkopts

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

Flag เพิ่มเติมที่จะส่งไปยัง Linker
module_map

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

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

สตริง ค่าเริ่มต้นคือ ""

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

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

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

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

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

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

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

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

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

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

sdk_includes

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

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

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

รายการไฟล์ C, C++, Objective-C และ Objective-C++ ที่ รวมเป็นส่วนหัวโดยไฟล์ต้นฉบับในกฎนี้หรือโดยผู้ใช้ ไลบรารีนี้ ซึ่งต่างจาก hdrs ตรงที่ระบบจะไม่คอมไพล์ไฟล์เหล่านี้แยกจาก แหล่งที่มา
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

ป้ายกำกับ กำหนดค่าไม่ได้ ต้องระบุ

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

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

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

xcode_config

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

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

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

Attributes
name

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

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

default

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

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

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

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

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

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

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

เป้าหมาย xcode_version ที่ยอมรับซึ่งอาจใช้ได้ หากค่าของแฟล็ก xcode_version build ตรงกับชื่อแทนหรือหมายเลขเวอร์ชันของ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

สตริง กำหนดค่าไม่ได้ ค่าเริ่มต้นคือ ""

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

สตริง กำหนดค่าไม่ได้ ค่าเริ่มต้นคือ ""

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

สตริง กำหนดค่าไม่ได้ ค่าเริ่มต้นคือ ""

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

สตริง กำหนดค่าไม่ได้ ค่าเริ่มต้นคือ ""

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

สตริง กำหนดค่าไม่ได้ ค่าเริ่มต้นคือ ""

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

สตริง กำหนดค่าไม่ได้ ต้องระบุ

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