กฎ
j2objc_library
ดูแหล่งที่มาของกฎj2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, exec_compatible_with, exec_properties, features, jre_deps, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
กฎนี้ใช้ J2ObjC เพื่อแปลไฟล์ต้นฉบับ Java เป็น Objective-C ซึ่งจะนำไปใช้เป็นทรัพยากร Dependency ของกฎ objc_library และ objc_binary ดูข้อมูลโดยละเอียดเกี่ยวกับ J2ObjC ได้ที่เว็บไซต์ J2ObjC
ระบุแฟล็กการเปลี่ยนรูปแบบ J2ObjC ที่กำหนดเองได้โดยใช้แฟล็กบิลด์ --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
เป้าหมาย การแปล J2ObjC จะทำงานแตกต่างกันไปตามประเภทของไฟล์ซอร์สของ Java ต้นทางที่รวมอยู่ในการปิดแบบทรานซิทีฟ ระบบจะสร้างไฟล์ต้นฉบับ .h และ .m ที่เกี่ยวข้องสำหรับไฟล์ต้นฉบับ .java ที่รวมอยู่ใน ผู้ใช้จะนำเข้าไฟล์ส่วนหัวที่ J2ObjC สร้างขึ้นในโค้ดได้ เส้นทางการนำเข้าสำหรับไฟล์เหล่านี้เป็นเส้นทางที่สัมพันธ์กับรูทของอาร์ติแฟกต์ Java ดั้งเดิม ตัวอย่างเช่น
หากกฎ proto_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, deps, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, includes, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)
กฎนี้สรุปไลบรารีแบบคงที่ที่คอมไพล์แล้วในรูปแบบไฟล์ .a
ทั้งยังช่วยให้ส่งออกส่วนหัวและทรัพยากรโดยใช้แอตทริบิวต์เดียวกันกับที่ objc_library
รองรับได้ด้วย
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ |
deps
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
hdrs
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ ส่วนหัวเหล่านี้อธิบายอินเทอร์เฟซสาธารณะสำหรับไลบรารีและแหล่งที่มาต่างๆ ในกฎนี้หรือกฎที่ขึ้นต้นจะนำไปรวมได้ ส่วนหัวที่ไม่ได้รวมไว้โดยไคลเอ็นต์ของไลบรารีนี้ควรแสดงอยู่ในแอตทริบิวต์ srcs แทน ระบบจะคอมไพล์เหล่านี้แยกต่างหากจากแหล่งที่มาหากมีการเปิดใช้โมดูล |
alwayslink
|
บูลีน ค่าเริ่มต้นคือ srcs และ non_arc_srcs แม้ว่าบางรายการจะไม่มีสัญลักษณ์ที่ไบนารีอ้างอิงก็ตาม
วิธีนี้มีประโยชน์หากโค้ดไม่ได้ถูกเรียกอย่างชัดเจนด้วยโค้ดในไบนารี เช่น หากโค้ดของคุณลงทะเบียนเพื่อรับ Callback ที่บริการบางอย่างให้
|
archives
|
รายการป้ายกำกับ ต้องระบุ รายการไฟล์.a รายการที่ระบุให้กับเป้าหมาย Objective-C ขึ้นอยู่กับเป้าหมายนี้
|
includes
|
รายการสตริง ค่าเริ่มต้นคือ #include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้
และเป้าหมายทั้งหมดที่เกี่ยวข้อง
การดำเนินการนี้มีไว้เพื่อรองรับไลบรารีของบุคคลที่สามและไลบรารีโอเพนซอร์สที่ไม่ได้ระบุเส้นทางของพื้นที่ทำงานทั้งหมดในคำสั่ง #import/#include
ระบบจะแปลเส้นทางแบบสัมพัทธ์กับไดเรกทอรีแพ็กเกจ รวมถึงรวม Genfiles และรูท bin (เช่น ซึ่งต่างจาก COPTS ตรงที่จะเพิ่มแฟล็กเหล่านี้สำหรับกฎนี้และกฎทุกกฎที่อ้างอิงกฎดังกล่าว (หมายเหตุ: ไม่ใช่กฎเกณฑ์แต่อย่างใด) โปรดใช้ความระมัดระวังเป็นอย่างยิ่งเนื่องจากอาจทำให้เกิดผลกระทบอย่างมาก หากไม่แน่ใจ ให้เพิ่มแฟล็ก "-iquote" ลงใน COPTS แทน |
sdk_dylibs
|
รายการสตริง ค่าเริ่มต้นคือ |
sdk_frameworks
|
รายการสตริง ค่าเริ่มต้นคือ เมื่อลิงก์ไบนารีของ Apple ระดับบนสุด เฟรมเวิร์ก SDK ทั้งหมดที่แสดงในกราฟทรัพยากร Dependency แบบสําเนาของไบนารีนั้นจะลิงก์กัน |
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, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, stamp, 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 แม้ว่าบางรายการจะไม่มีสัญลักษณ์ที่ไบนารีอ้างอิงก็ตาม
วิธีนี้มีประโยชน์หากโค้ดไม่ได้ถูกเรียกอย่างชัดเจนด้วยโค้ดในไบนารี เช่น หากโค้ดของคุณลงทะเบียนเพื่อรับ Callback ที่บริการบางอย่างให้
|
copts
|
รายการสตริง ค่าเริ่มต้นคือ โปรดทราบว่าสำหรับโปรเจ็กต์ Xcode ที่สร้างขึ้น เส้นทางไดเรกทอรีที่ระบุโดยใช้แฟล็ก "-I" ในคอปเตอร์จะถูกแยกวิเคราะห์ไว้ข้างหน้า "$(WORKSPACE_ROOT)/" หากเส้นทางนั้นเป็นเส้นทางสัมพัทธ์ และเพิ่มลงในเส้นทางการค้นหาส่วนหัวสำหรับเป้าหมาย Xcode ที่เกี่ยวข้อง |
defines
|
รายการสตริง ค่าเริ่มต้นคือ -D เพิ่มเติมที่จะส่งผ่านไปยังคอมไพเลอร์ โดยควรอยู่ในรูปแบบ KEY=VALUE หรือเพียง KEY และส่งผ่านไปยังคอมไพเลอร์สำหรับเป้าหมายนี้ (เหมือน copts ) แต่รวมถึงทรัพยากร Dependency ทั้งหมดของ objc_ ของเป้าหมายนี้ด้วย
ขึ้นอยู่กับการแทนที่ "MakeVariable" และการแปลงข้อมูลเป็นโทเค็นของ Bourne Shell
|
enable_modules
|
บูลีน ค่าเริ่มต้นคือ |
implementation_deps
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ deps ตรงที่จะมีการใช้สำหรับการคอมไพล์ไลบรารีนี้เท่านั้น ไม่ใช่ไลบรารีที่ขึ้นอยู่กับไลบรารีนี้ ไลบรารีที่ระบุด้วย implementation_deps ยังคงลิงก์ในเป้าหมายไบนารีที่ขึ้นอยู่กับไลบรารีนี้
|
includes
|
รายการสตริง ค่าเริ่มต้นคือ #include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้
และเป้าหมายทั้งหมดที่เกี่ยวข้อง
การดำเนินการนี้มีไว้เพื่อรองรับไลบรารีของบุคคลที่สามและไลบรารีโอเพนซอร์สที่ไม่ได้ระบุเส้นทางของพื้นที่ทำงานทั้งหมดในคำสั่ง #import/#include
ระบบจะแปลเส้นทางแบบสัมพัทธ์กับไดเรกทอรีแพ็กเกจ รวมถึงรวม Genfiles และรูท bin (เช่น ซึ่งต่างจาก COPTS ตรงที่จะเพิ่มแฟล็กเหล่านี้สำหรับกฎนี้และกฎทุกกฎที่อ้างอิงกฎดังกล่าว (หมายเหตุ: ไม่ใช่กฎเกณฑ์แต่อย่างใด) โปรดใช้ความระมัดระวังเป็นอย่างยิ่งเนื่องจากอาจทำให้เกิดผลกระทบอย่างมาก หากไม่แน่ใจ ให้เพิ่มแฟล็ก "-iquote" ลงใน COPTS แทน |
linkopts
|
รายการสตริง ค่าเริ่มต้นคือ |
module_map
|
ป้ายกำกับ ค่าเริ่มต้นคือ |
module_name
|
สตริง ค่าเริ่มต้นคือ |
non_arc_srcs
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
pch
|
ป้ายกำกับ ค่าเริ่มต้นคือ |
sdk_dylibs
|
รายการสตริง ค่าเริ่มต้นคือ |
sdk_frameworks
|
รายการสตริง ค่าเริ่มต้นคือ เมื่อลิงก์ไบนารีของ Apple ระดับบนสุด เฟรมเวิร์ก SDK ทั้งหมดที่แสดงในกราฟทรัพยากร Dependency แบบสําเนาของไบนารีนั้นจะลิงก์กัน |
sdk_includes
|
รายการสตริง ค่าเริ่มต้นคือ #include/#import รายการที่เพิ่มไปยังเป้าหมายนี้และเป้าหมายที่เกี่ยวข้องทั้งหมด โดยที่แต่ละเส้นทางสัมพันธ์กับ $(SDKROOT)/usr/include
|
stamp
|
บูลีน ค่าเริ่มต้นคือ |
textual_hdrs
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
weak_sdk_frameworks
|
รายการสตริง ค่าเริ่มต้นคือ |