กฎ
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
ระบุแฟล็กการเปลี่ยนรูปแบบ 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 ที่รวมอยู่ใน Closure แบบทรานซิทีฟ สําหรับไฟล์ต้นฉบับ .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, 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
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ ส่วนหัวเหล่านี้อธิบายอินเทอร์เฟซสาธารณะสำหรับคลัง และจะพร้อมให้แหล่งที่มารวมไว้ในกฎนี้หรือกฎที่เกี่ยวข้อง ส่วนหัวที่ลูกค้าของไลบรารีนี้ไม่ได้ตั้งใจจะรวมไว้ควรแสดงในแอตทริบิวต์ srcs แทน ระบบจะคอมไพล์ไฟล์เหล่านี้แยกจากซอร์สหากเปิดใช้โมดูล |
alwayslink
|
บูลีน ค่าเริ่มต้นคือ srcs และ non_arc_srcs แม้ว่าบางไฟล์จะไม่มีสัญลักษณ์ที่ไบนารีอ้างอิงก็ตาม
ซึ่งมีประโยชน์ในกรณีที่โค้ดในไบนารีไม่ได้เรียกใช้โค้ดของคุณอย่างชัดเจน เช่น ในกรณีที่โค้ดลงทะเบียนเพื่อรับการเรียกกลับบางอย่างจากบริการบางอย่าง
|
archives
|
รายการป้ายกำกับ (ต้องระบุ) รายการไฟล์.a ที่ส่งไปยังเป้าหมาย Objective-C ที่ขึ้นอยู่กับเป้าหมายนี้
|
includes
|
รายการสตริง ค่าเริ่มต้นคือ #include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้และเป้าหมายทั้งหมดที่เกี่ยวข้อง
การดำเนินการนี้มีไว้เพื่อรองรับไลบรารีของบุคคลที่สามและไลบรารีโอเพนซอร์สที่ไม่ได้ระบุเส้นทางของพื้นที่ทํางานทั้งหมดในคำสั่ง #import/#include
ระบบจะตีความเส้นทางตามไดเรกทอรีแพ็กเกจ และรวมรูท genfiles และ bin (เช่น ซึ่งแตกต่างจาก COPTS เนื่องจากระบบจะเพิ่ม Flag เหล่านี้สำหรับกฎนี้และกฎทุกข้อที่ขึ้นอยู่กับกฎนี้ (หมายเหตุ: ไม่ใช่กฎที่ใช้กับแอตทริบิวต์) โปรดใช้ความระมัดระวังอย่างยิ่ง เนื่องจากการดำเนินการนี้อาจมีผลกระทบที่กว้างไกล หากไม่แน่ใจ ให้เพิ่มแฟล็ก "-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, 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 แม้ว่าบางไฟล์จะไม่มีสัญลักษณ์ที่ไบนารีอ้างอิงก็ตาม
วิธีนี้มีประโยชน์หากโค้ดไม่ได้มีการเรียกอย่างชัดเจนด้วยโค้ดในไบนารี เช่น หากโค้ดของคุณลงทะเบียนเพื่อรับ Callback ที่บริการบางอย่างมีให้
|
copts
|
รายการสตริง ค่าเริ่มต้นคือ โปรดทราบว่าสำหรับโปรเจ็กต์ Xcode ที่สร้างขึ้น ระบบจะแยกวิเคราะห์เส้นทางไดเรกทอรีที่ระบุโดยใช้ Flag "-I" ใน copts โดยนำ "$(WORKSPACE_ROOT)/" มาไว้ข้างหน้าหากเป็นเส้นทางแบบสัมพัทธ์ และเพิ่มลงในเส้นทางการค้นหาส่วนหัวสำหรับเป้าหมาย Xcode ที่เชื่อมโยง |
defines
|
รายการสตริง ค่าเริ่มต้นคือ -D เพิ่มเติมที่จะส่งไปยังคอมไพเลอร์ โดยควรอยู่ในรูปแบบ KEY=VALUE หรือเพียง KEY และไม่เพียงแค่ส่งไปยังคอมไพเลอร์สำหรับเป้าหมายนี้ (ดังที่ copts ) แต่รวมถึงทรัพยากร Dependency ทั้งหมดของ objc_ ของเป้าหมายนี้
ขึ้นอยู่กับการแทนที่ "Make variable" และการแยกออกเป็นโทเค็นของ Bourne Shell
|
enable_modules
|
บูลีน ค่าเริ่มต้นคือ |
implementation_deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ deps ตรงที่ส่วนหัวและเส้นทางรวมของไลบรารีเหล่านี้ (และ Dependency แบบทรานซิทีฟทั้งหมด) จะใช้สำหรับการคอมไพล์ไลบรารีนี้เท่านั้น ไม่ใช่ไลบรารีที่ขึ้นอยู่กับไลบรารีนี้ ไลบรารีที่ระบุด้วย implementation_deps จะยังคงลิงก์อยู่ในเป้าหมายไบนารีที่ขึ้นอยู่กับไลบรารีนี้
|
includes
|
รายการสตริง ค่าเริ่มต้นคือ #include/#import รายการที่จะเพิ่มไปยังเป้าหมายนี้และเป้าหมายทั้งหมดที่เกี่ยวข้อง
การดำเนินการนี้มีไว้เพื่อรองรับไลบรารีของบุคคลที่สามและไลบรารีโอเพนซอร์สที่ไม่ได้ระบุเส้นทางของพื้นที่ทํางานทั้งหมดในคำสั่ง #import/#include
ระบบจะตีความเส้นทางตามไดเรกทอรีแพ็กเกจ และรวมรูท genfiles และ bin (เช่น ซึ่งต่างจาก COPTS ตรงที่จะเพิ่มแฟล็กเหล่านี้สำหรับกฎนี้และกฎทั้งหมดที่อ้างอิงกฎดังกล่าว (หมายเหตุ: ไม่ใช่กฎที่ใช้กับแอตทริบิวต์) โปรดใช้ความระมัดระวังอย่างยิ่ง เนื่องจากการดำเนินการนี้อาจมีผลกระทบที่กว้างไกล หากไม่แน่ใจ ให้เพิ่ม Flag "-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
|
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
|
ป้ายกํากับ ไม่สามารถกําหนดค่าได้ ต้องระบุ เวอร์ชันเริ่มต้นของ Xcode สำหรับแพลตฟอร์มนี้ |
versions
|
รายการป้ายกำกับ nonconfigurable ค่าเริ่มต้นคือ |
xcode_config
ดูแหล่งที่มาของกฎxcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)
เป้าหมายเดียวของกฎนี้สามารถอ้างอิงโดยใช้แฟล็ก --xcode_version_config
build เพื่อแปลงแฟล็ก --xcode_version
เป็นเวอร์ชัน xcode อย่างเป็นทางการที่ยอมรับ
ซึ่งจะช่วยให้คุณเลือกเวอร์ชัน Xcode อย่างเป็นทางการจากอีเมลแทนที่ที่ลงทะเบียนไว้ได้
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้ |
default
|
ป้ายกำกับ ไม่สามารถกำหนดค่าได้ ค่าเริ่มต้นคือ xcode_version ที่ระบุไว้หากไม่ได้ระบุ Flag การสร้าง xcode_version ต้องระบุค่านี้หากตั้งค่า versions ไว้ ระบบอาจตั้งค่านี้ไม่ได้หากมีการตั้งค่า remote_versions หรือ local_versions
|
local_versions
|
ป้ายกํากับ ไม่สามารถกําหนดค่าได้ ค่าเริ่มต้นคือ xcode_version ที่พร้อมใช้งานในพื้นที่
ซึ่งจะใช้ร่วมกับ local_versions เพื่อเลือกเวอร์ชันที่ใช้ร่วมกันได้ ระบบอาจตั้งค่านี้ไม่ได้หากตั้งค่า versions ไว้
|
remote_versions
|
ป้ายกํากับ ไม่สามารถกําหนดค่าได้ ค่าเริ่มต้นคือ 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
|
สตริง nonconfigurable ค่าเริ่มต้นคือ ios_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
|
default_macos_sdk_version
|
สตริง ไม่สามารถกําหนดค่าได้ ค่าเริ่มต้นคือ macos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
|
default_tvos_sdk_version
|
สตริง ไม่สามารถกําหนดค่าได้ ค่าเริ่มต้นคือ tvos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
|
default_visionos_sdk_version
|
สตริง nonconfigurable ค่าเริ่มต้นคือ visionos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
|
default_watchos_sdk_version
|
สตริง ไม่สามารถกําหนดค่าได้ ค่าเริ่มต้นคือ watchos_sdk_version จะลบล้างค่าที่ระบุไว้ที่นี่
|
version
|
String; nonconfigurable; ต้องระบุ หมายเลขเวอร์ชันอย่างเป็นทางการของ Xcode เวอร์ชันหนึ่งๆ |