กฎ
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
เป้าหมาย การแปล J2ObjC ทำงานแตกต่างกันไปตามประเภทของซอร์ส Java ต้นฉบับ
ไฟล์ที่รวมอยู่ในการปิดแบบทรานซิทีฟ สำหรับไฟล์ต้นฉบับ .java ไฟล์ที่รวมอยู่ใน
ผู้ใช้จะนำเข้าไฟล์ส่วนหัวที่ J2ObjC สร้างขึ้นในโค้ดได้ เส้นทางการนำเข้าสำหรับ
ไฟล์เหล่านี้เป็นเส้นทางที่สัมพันธ์กับรูทของอาร์ติแฟกต์ Java ดั้งเดิม ตัวอย่างเช่น
หากกฎ protocol_library อยู่ระหว่างการปิดแบบทรานซิทีฟของกฎนี้ โปรโตคอล J2ObjC จะ
สร้างขึ้น คอมไพล์ และเชื่อมโยงกันที่ระดับไบนารี สำหรับ Proto
|
entry_classes
|
--j2objc_dead_code_removal
เปิดอยู่ คลาส Java ควรมีการระบุไว้ในชื่อตามรูปแบบบัญญัติตามที่กำหนดโดย
Java
ข้อกำหนดภาษา
เมื่อระบุ Flag --j2objc_dead_code_removal ระบบจะแสดงรายการคลาสของรายการ
จะถูกเก็บแบบทันทีและใช้เป็นจุดแรกเข้าเพื่อทำการวิเคราะห์โค้ดที่ใช้งานไม่ได้
จากนั้นคลาสที่ไม่ได้ใช้งานจะถูกนำออกจาก App Bundle ของ ObjC
|
jre_deps
|
j2objc_library ข้อ มีเพียงฟังก์ชันหลักของ JRE เท่านั้นที่ลิงก์โดยค่าเริ่มต้น
|
objc_import
objc_import(name, 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 |
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ |
hdrs
|
ส่วนหัวเหล่านี้อธิบายถึงอินเทอร์เฟซสาธารณะสำหรับไลบรารี และจะ เปิดให้รวมโดยแหล่งที่มาในกฎนี้หรือตามกฎที่เกี่ยวข้อง กฎ ส่วนหัวที่ไคลเอ็นต์ของไลบรารีนี้ไม่ได้ให้รวมไว้ ควรแสดงในแอตทริบิวต์ srcs แทน ระบบจะคอมไพล์เหล่านี้แยกต่างหากจากแหล่งที่มาหากมีการเปิดใช้โมดูล |
alwayslink
|
srcs และ non_arc_srcs แม้ว่าบางรายการจะไม่มี
สัญลักษณ์ที่ไบนารีอ้างอิง
วิธีนี้มีประโยชน์หากโค้ดของคุณไม่ได้ถูกเรียกอย่างชัดแจ้งด้วยโค้ดใน
ไบนารี เช่น หากโค้ดของคุณลงทะเบียนเพื่อให้รับการเรียกกลับ
ที่ให้บริการโดยบางบริการ
|
archives
|
.a รายการที่ระบุให้กับ Objective-C เป้าหมายที่
ขึ้นอยู่กับเป้าหมายนี้
|
includes
|
#include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้
และทั้งหมดขึ้นอยู่กับเป้าหมาย
เพื่อรองรับไลบรารีของบุคคลที่สามและไลบรารีแบบโอเพนซอร์สที่ไม่
ระบุเส้นทางของพื้นที่ทำงานทั้งหมด
ใบแจ้งยอด #import/#include รายการ
ระบบจะแปลเส้นทางซึ่งสัมพันธ์กับไดเรกทอรีแพ็กเกจ และ
Genfiles และ bin Roots (เช่น กฎนี้ต่างจาก COPTS ตรงที่เพิ่มแฟล็กเหล่านี้ และทุกกฎที่เกี่ยวข้อง (หมายเหตุ: ไม่ใช่กฎเกณฑ์แต่อย่างใด) เป็น ระมัดระวังให้มาก เนื่องจากอาจส่งผลกระทบเป็นวงกว้าง หากไม่แน่ใจ ให้เพิ่ม "-iquote" แจ้งว่าเป็น COPTS แทน |
sdk_dylibs
|
|
sdk_frameworks
|
เมื่อลิงก์ไบนารีของ Apple ระดับบนสุด เฟรมเวิร์ก SDK ทั้งหมดที่แสดงอยู่ในไบนารีนั้น ลิงก์กราฟการขึ้นต่อกันแบบสับเปลี่ยนแล้ว |
sdk_includes
|
#include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้
และทั้งหมดขึ้นอยู่กับเป้าหมาย โดยที่แต่ละเส้นทางสัมพันธ์กับ
$(SDKROOT)/usr/include
|
textual_hdrs
|
|
weak_sdk_frameworks
|
|
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, runtime_deps, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)
กฎนี้สร้างไลบรารีแบบคงที่จากไฟล์ต้นฉบับ Objective-C ที่ระบุ
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ |
deps
|
|
srcs
|
|
hdrs
|
ส่วนหัวเหล่านี้อธิบายถึงอินเทอร์เฟซสาธารณะสำหรับไลบรารี และจะ เปิดให้รวมโดยแหล่งที่มาในกฎนี้หรือตามกฎที่เกี่ยวข้อง กฎ ส่วนหัวที่ไคลเอ็นต์ของไลบรารีนี้ไม่ได้ให้รวมไว้ ควรแสดงในแอตทริบิวต์ srcs แทน ระบบจะคอมไพล์เหล่านี้แยกต่างหากจากแหล่งที่มาหากมีการเปิดใช้โมดูล |
alwayslink
|
srcs และ non_arc_srcs แม้ว่าบางรายการจะไม่มี
สัญลักษณ์ที่ไบนารีอ้างอิง
วิธีนี้มีประโยชน์หากโค้ดของคุณไม่ได้ถูกเรียกอย่างชัดแจ้งด้วยโค้ดใน
ไบนารี เช่น หากโค้ดของคุณลงทะเบียนเพื่อให้รับการเรียกกลับ
ที่ให้บริการโดยบางบริการ
|
copts
|
โปรดทราบว่าเส้นทางไดเรกทอรีที่ระบุโดยใช้ "-I" สำหรับโปรเจ็กต์ Xcode ที่สร้างขึ้น ธงใน มีการแยกวิเคราะห์บรรทัดแรก โดยเพิ่ม "$(WORKSPACE_ROOT)/" ไว้ข้างหน้า หากเป็นเส้นทางแบบสัมพัทธ์ และ เพิ่มไปยังเส้นทางการค้นหาส่วนหัวสำหรับเป้าหมาย Xcode ที่เชื่อมโยง |
defines
|
-D เพิ่มเติมที่จะส่งผ่านไปยังคอมไพเลอร์ ควรอยู่ใน
แบบฟอร์ม KEY=VALUE หรือเพียง KEY และ
ไม่ได้ส่งผ่านไปยังคอมไพเลอร์สำหรับเป้าหมายนี้เท่านั้น (เป็น copts
) แต่รวมถึงทรัพยากร Dependency ทั้งหมดของ objc_ ของเป้าหมายนี้
ขึ้นอยู่กับการแทนที่ "Makeตัวแปร" และ
การแปลงข้อมูลเป็นโทเค็นของ Bourne Shell
|
enable_modules
|
|
implementation_deps
|
deps ส่วนหัว และระบุเส้นทางของไลบรารีเหล่านี้ (รวมถึงเส้นทางทั้งหมดของไลบรารี
deps สับเปลี่ยน) จะใช้สำหรับการรวบรวมไลบรารีนี้เท่านั้น ไม่รวมถึงไลบรารีที่
ต้องพึ่งพาสิ่งนั้น คลังที่ระบุด้วย implementation_deps ยังคงลิงก์อยู่
ในเป้าหมายไบนารีที่ขึ้นอยู่กับไลบรารีนี้
|
includes
|
#include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้
และทั้งหมดขึ้นอยู่กับเป้าหมาย
เพื่อรองรับไลบรารีของบุคคลที่สามและไลบรารีแบบโอเพนซอร์สที่ไม่
ระบุเส้นทางของพื้นที่ทำงานทั้งหมด
ใบแจ้งยอด #import/#include รายการ
ระบบจะแปลเส้นทางซึ่งสัมพันธ์กับไดเรกทอรีแพ็กเกจ และ
Genfiles และ bin Roots (เช่น กฎนี้ต่างจาก COPTS ตรงที่เพิ่มแฟล็กเหล่านี้ และทุกกฎที่เกี่ยวข้อง (หมายเหตุ: ไม่ใช่กฎเกณฑ์แต่อย่างใด) เป็น ระมัดระวังให้มาก เนื่องจากอาจส่งผลกระทบเป็นวงกว้าง หากไม่แน่ใจ ให้เพิ่ม "-iquote" แจ้งว่าเป็น COPTS แทน |
linkopts
|
|
module_map
|
|
module_name
|
|
non_arc_srcs
|
|
pch
|
|
runtime_deps
|
|
sdk_dylibs
|
|
sdk_frameworks
|
เมื่อลิงก์ไบนารีของ Apple ระดับบนสุด เฟรมเวิร์ก SDK ทั้งหมดที่แสดงอยู่ในไบนารีนั้น ลิงก์กราฟการขึ้นต่อกันแบบสับเปลี่ยนแล้ว |
sdk_includes
|
#include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้
และทั้งหมดขึ้นอยู่กับเป้าหมาย โดยที่แต่ละเส้นทางสัมพันธ์กับ
$(SDKROOT)/usr/include
|
textual_hdrs
|
|
weak_sdk_frameworks
|
|
available_xcodes
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)
อินสแตนซ์ของกฎ xcode_config
ขึ้นอยู่กับเป้าหมาย 2 ข้อของกฎนี้เพื่อ
ระบุเวอร์ชัน xcode ที่พร้อมใช้งานจากระยะไกลและในเครื่อง
ซึ่งจะช่วยให้เลือกเวอร์ชัน xcode อย่างเป็นทางการจาก xcode ที่มีร่วมกันได้
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ |
default
|
|
versions
|
|
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
|
xcode_version ที่ระบุจะใช้ในกรณีต่อไปนี้
ไม่ได้ระบุแฟล็กบิลด์ xcode_version ต้องระบุข้อมูลนี้หากมี
ตั้งค่าversions แล้ว อาจไม่ได้ตั้งค่านี้หาก remote_versions หรือ
ตั้งค่า local_versions แล้ว
|
local_versions
|
xcode_version |
remote_versions
|
xcode_version |
versions
|
xcode_version รายการ |
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_version จะลบล้างค่าที่ระบุไว้ที่นี่
|
default_macos_sdk_version
|
macos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
|
default_tvos_sdk_version
|
tvos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
|
default_visionos_sdk_version
|
visionos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
|
default_watchos_sdk_version
|
watchos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
|
version
|
|