กฎ
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 ที่ไม่ได้ระบุตัวเลือกการคอมไพล์ในแอตทริบิวต์
นอกจากนี้ โค้ดที่สร้างขึ้นจะได้รับการแก้ไขความซ้ำซ้อนในระดับเป้าหมาย ไม่ใช่ระดับแหล่งที่มา หากคุณมีเป้าหมาย Java 2 เป้าหมายที่แตกต่างกันซึ่งมีไฟล์แหล่งที่มา Java เดียวกัน คุณอาจเห็นข้อผิดพลาดสัญลักษณ์ที่ซ้ำกันเมื่อลิงก์ วิธีที่ถูกต้องในการแก้ไขปัญหานี้คือการย้ายไฟล์ต้นทางของ Java ที่แชร์ไปยังเป้าหมายทั่วไปแยกต่างหากซึ่งพึ่งพาได้
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ |
deps
|
j2objc_library , java_library , java_import และ java_proto_library ที่มีไฟล์ Java ที่จะแปลงเป็น Objective-C
เป้าหมาย การแปล J2ObjC จะทำงานแตกต่างกันไปตามประเภทของไฟล์ต้นฉบับ Java ที่รวมอยู่ในการปิดแบบสกรรม สำหรับไฟล์ต้นฉบับ .java แต่ละรายการที่รวมอยู่ใน ผู้ใช้สามารถนำเข้าไฟล์ส่วนหัวที่ J2ObjC สร้างขึ้นในโค้ดของตนได้ เส้นทางการนำเข้าสำหรับไฟล์เหล่านี้คือเส้นทางที่เกี่ยวข้องกับรูทของอาร์ติแฟกต์ Java ดั้งเดิม ตัวอย่างเช่น
หากกฎ proto_library อยู่ในการปิดแบบทรานซิทีฟของกฎนี้ ระบบจะสร้าง J2ObjC proto รวม และทำการลิงก์ที่ระดับไบนารีด้วย สำหรับ Proto |
entry_classes
|
--j2objc_dead_code_removal
เปิดอยู่ คุณควรระบุคลาส Java ในชื่อ Canonical ตามข้อกำหนดภาษาของ Java
เมื่อระบุแฟล็ก --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
|
ส่วนหัวเหล่านี้อธิบายอินเทอร์เฟซสาธารณะของไลบรารีและจะพร้อมใช้งานสำหรับการรวมตามแหล่งที่มาในกฎนี้หรือในกฎที่เกี่ยวข้อง ส่วนหัวที่ไม่ได้มีไว้สำหรับให้ไคลเอ็นต์ของไลบรารีนี้รวมอยู่ควรแสดงในแอตทริบิวต์ src แทน ซึ่งจะคอมไพล์แยกต่างหากจากต้นทางหากเปิดใช้โมดูล |
alwayslink
|
srcs และ non_arc_srcs แม้ว่าบางไฟล์จะไม่มีสัญลักษณ์ที่ไบนารีอ้างอิงก็ตาม
ซึ่งจะเป็นประโยชน์หากไม่มีการเรียกใช้โค้ดอย่างชัดแจ้งในไบนารี เช่น หากโค้ดของคุณบันทึกเพื่อรับโค้ดเรียกกลับจากบางบริการ
|
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, 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
|
ส่วนหัวเหล่านี้อธิบายอินเทอร์เฟซสาธารณะของไลบรารีและจะพร้อมใช้งานสำหรับการรวมตามแหล่งที่มาในกฎนี้หรือในกฎที่เกี่ยวข้อง ส่วนหัวที่ไม่ได้มีไว้สำหรับให้ไคลเอ็นต์ของไลบรารีนี้รวมอยู่ควรแสดงในแอตทริบิวต์ src แทน ซึ่งจะคอมไพล์แยกต่างหากจากต้นทางหากเปิดใช้โมดูล |
alwayslink
|
srcs และ non_arc_srcs แม้ว่าบางไฟล์จะไม่มีสัญลักษณ์ที่ไบนารีอ้างอิงก็ตาม
ซึ่งจะเป็นประโยชน์หากไม่มีการเรียกใช้โค้ดอย่างชัดแจ้งในไบนารี เช่น หากโค้ดของคุณบันทึกเพื่อรับโค้ดเรียกกลับจากบางบริการ
|
copts
|
โปรดทราบว่าสำหรับโปรเจ็กต์ Xcode ที่สร้างขึ้น เส้นทางไดเรกทอรีที่ระบุโดยใช้แฟล็ก "-I" ใน copt จะถูกแยกวิเคราะห์ ใส่ "$(WORKSPACE_ROOT)/" ไว้ด้านหน้าหากเป็นเส้นทางแบบสัมพัทธ์ และเพิ่มไว้ในเส้นทางการค้นหาส่วนหัวสำหรับเป้าหมาย Xcode ที่เกี่ยวข้อง |
defines
|
-D เพิ่มเติมเพื่อส่งไปยังคอมไพเลอร์ โดยคีย์ควรอยู่ในรูปแบบ KEY=VALUE หรือ KEY และไม่เพียงส่งไปยังคอมไพเลอร์สำหรับเป้าหมายนี้เท่านั้น (ในฐานะ copts ) แต่ยังรวมถึงทรัพยากร Dependency ทั้งหมดของเป้าหมาย objc_ ด้วย
ขึ้นอยู่กับการแทนที่ "สร้างตัวแปร" และการแปลงข้อมูลเป็นโทเค็นของ 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
|
|
runtime_deps
|
|
sdk_dylibs
|
|
sdk_frameworks
|
เมื่อลิงก์ไบนารีของ Apple ระดับบนสุด ระบบจะลิงก์เฟรมเวิร์ก SDK ทั้งหมดที่แสดงในกราฟทรัพยากร Dependency ของไบนารีนั้น |
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)
เป้าหมาย 2 ข้อของกฎนี้ที่อินสแตนซ์ของกฎ xcode_config
อาจอ้างอิงเพื่อระบุเวอร์ชัน 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)
Flag บิลด์ --xcode_version_config
จะอ้างอิงเป้าหมายเดียวของกฎนี้ได้เพื่อแปลแฟล็ก --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
|
|