กฎ Objective-C

รายงานปัญหา ดูซอร์สโค้ด รุ่น Nightly · 8.0 7.4 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 ซึ่งจะใช้เป็นข้อกำหนดของกฎ objc_library และ objc_binary ได้ ดูข้อมูลโดยละเอียดเกี่ยวกับ J2ObjC ได้ที่เว็บไซต์ J2ObjC

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

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

นอกจากนี้ ระบบจะกรองโค้ดที่ซ้ำกันออกที่ระดับเป้าหมาย ไม่ใช่ระดับแหล่งที่มา หากมีเป้าหมาย Java 2 รายการที่แตกต่างกันซึ่งมีไฟล์ต้นฉบับ 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 ระบบไม่รองรับเป้าหมาย 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 ในระดับไบนารีด้วย สําหรับ proto //some/proto/foo.proto ผู้ใช้จะอ้างอิงโค้ดที่สร้างขึ้นได้โดยใช้เส้นทางการนําเข้า some/proto/foo.j2objc.pb.h

entry_classes

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

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

sdk_includes

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

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

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

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

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

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

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

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

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

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

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

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

โปรดทราบว่าสำหรับโปรเจ็กต์ Xcode ที่สร้างขึ้น ระบบจะแยกวิเคราะห์เส้นทางไดเรกทอรีที่ระบุโดยใช้ Flag "-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 ตรงที่ส่วนหัวและเส้นทางรวมของไลบรารีเหล่านี้ (และ Dependency แบบทรานซิทีฟทั้งหมด) จะใช้สำหรับการคอมไพล์ไลบรารีนี้เท่านั้น ไม่ใช่ไลบรารีที่ขึ้นอยู่กับไลบรารีนี้ ไลบรารีที่ระบุด้วย implementation_deps จะยังคงลิงก์อยู่ในเป้าหมายไบนารีที่ขึ้นอยู่กับไลบรารีนี้
includes

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

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

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

ซึ่งแตกต่างจาก COPTS เนื่องจากระบบจะเพิ่ม Flag เหล่านี้สำหรับกฎนี้และกฎทุกข้อที่ขึ้นอยู่กับกฎนี้ (หมายเหตุ: ไม่ใช่กฎที่ใช้กับแอตทริบิวต์) โปรดใช้ความระมัดระวังอย่างยิ่ง เนื่องจากการดำเนินการนี้อาจมีผลที่ตามมาอย่างกว้างขวาง หากไม่แน่ใจ ให้เพิ่ม 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 และไฟล์ที่ไม่ใช่ 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 ทั้งหมดที่แสดงในกราฟ Dependency แบบทรานซิทีฟของไบนารีนั้น

sdk_includes

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

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

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

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

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

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

Attributes
name

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

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

default

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

เวอร์ชันอย่างเป็นทางการเริ่มต้นของ Xcode ที่จะใช้ ระบบจะใช้เวอร์ชันที่ระบุโดยเป้าหมาย xcode_version ที่ระบุไว้หากไม่ได้ระบุ Flag การสร้าง 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 ที่ยอมรับซึ่งอาจนําไปใช้ได้ หากค่าของ Flag การสร้าง 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

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

เวอร์ชัน ios sdk ที่ใช้โดยค่าเริ่มต้นเมื่อใช้ Xcode เวอร์ชันนี้ Flag การสร้าง ios_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
default_macos_sdk_version

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

เวอร์ชัน macosx sdk ที่ใช้โดยค่าเริ่มต้นเมื่อใช้ xcode เวอร์ชันนี้ Flag การสร้าง macos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
default_tvos_sdk_version

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

เวอร์ชัน tvos sdk ที่ใช้โดยค่าเริ่มต้นเมื่อใช้ xcode เวอร์ชันนี้ Flag การสร้าง tvos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
default_visionos_sdk_version

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

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

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

เวอร์ชัน watchos sdk ที่ใช้โดยค่าเริ่มต้นเมื่อใช้ xcode เวอร์ชันนี้ Flag การสร้าง watchos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
version

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

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