กฎ
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
คุณระบุ Flag การแปลง J2ObjC ที่กำหนดเองได้โดยใช้ Flag บิลด์
--j2objc_translation_flags ในบรรทัดคำสั่ง
โปรดทราบว่าไฟล์ที่แปลซึ่งรวมอยู่ในเป้าหมาย j2objc_library จะ คอมไพล์โดยใช้การกำหนดค่าการคอมไพล์เริ่มต้น ซึ่งเป็นการกำหนดค่าเดียวกับแหล่งที่มาของ กฎ objc_library ที่ไม่มีตัวเลือกการคอมไพล์ที่ระบุในแอตทริบิวต์
นอกจากนี้ ระบบจะขจัดข้อมูลที่ซ้ำกันของโค้ดที่สร้างขึ้นที่ระดับเป้าหมาย ไม่ใช่ระดับแหล่งที่มา หากคุณมีเป้าหมาย Java 2 รายการที่แตกต่างกันซึ่งมีไฟล์ต้นฉบับ Java เดียวกัน คุณอาจเห็นข้อผิดพลาดเกี่ยวกับสัญลักษณ์ที่ซ้ำกัน ในเวลาลิงก์ วิธีที่ถูกต้องในการแก้ไขปัญหานี้คือการย้ายไฟล์ต้นฉบับ Java ที่แชร์ไปยังเป้าหมายทั่วไปที่แยกต่างหากซึ่งสามารถใช้เป็นทรัพยากร Dependency ได้
อาร์กิวเมนต์
| Attributes | |
|---|---|
name | 
        
           ชื่อ (ต้องระบุ) ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้  | 
      
          deps
         | 
        
                     รายการป้ายกำกับ ค่าเริ่มต้นคือ  j2objc_library, java_library,
        java_import และ java_proto_library ที่มี
        ไฟล์ Java ที่จะแปลงเป็น Objective-C
        เป้าหมาย  การแปล J2ObjC จะทำงานแตกต่างกันไปตามประเภทของไฟล์ต้นฉบับ Java ที่รวมอยู่ใน Closure แบบทรานซิทีฟ สำหรับไฟล์ต้นฉบับ .java แต่ละไฟล์ที่รวมอยู่ใน
         ผู้ใช้สามารถนำเข้าไฟล์ส่วนหัวที่ J2ObjC สร้างขึ้นในโค้ดได้ เส้นทางการนำเข้าสำหรับ
        ไฟล์เหล่านี้คือเส้นทางแบบสัมบูรณ์ของอาร์ติแฟกต์ Java ต้นฉบับ ตัวอย่างเช่น
         
        หากกฎ proto_library อยู่ในการปิดทรานซิทีฟของกฎนี้ ระบบจะสร้าง คอมไพล์ และลิงก์อิน J2ObjC protos ที่ระดับไบนารีด้วย
 สำหรับ Proto
          | 
      
          entry_classes
         | 
        
                     รายการสตริง ค่าเริ่มต้นคือ  --j2objc_dead_code_removal
         ควรกำหนดคลาส Java ในชื่อที่ถูกต้องตามที่กำหนดโดยข้อกำหนดภาษา Java
        เมื่อระบุแฟล็ก --j2objc_dead_code_removal ระบบจะรวบรวมรายการคลาสรายการ
        แบบทรานซิทีฟและใช้เป็นจุดแรกเข้าเพื่อทำการวิเคราะห์โค้ดที่ไม่ได้ใช้
        จากนั้นระบบจะนำคลาสที่ไม่ได้ใช้ออกจากแพ็กเกจแอป 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 ทั้งหมดที่แสดงในกราฟการอ้างอิงแบบทรานซิทีฟของไบนารีนั้น  | 
      
          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 แม้ว่าบางไฟล์จะไม่มี
          สัญลักษณ์ที่ไบนารีอ้างอิงก็ตาม
          ซึ่งจะมีประโยชน์ในกรณีที่โค้ดไม่ได้เรียกอย่างชัดเจนโดยโค้ดใน
          ไบนารี เช่น หากโค้ดลงทะเบียนเพื่อรับการเรียกกลับบางอย่าง
          ที่ได้รับจากบริการบางอย่าง
         | 
      
          copts
         | 
        
                     รายการสตริง ค่าเริ่มต้นคือ  โปรดทราบว่าสำหรับโปรเจ็กต์ Xcode ที่สร้างขึ้น ระบบจะแยกเส้นทางไดเรกทอรีที่ระบุโดยใช้แฟล็ก "-I" ใน copts ออกมา แล้วนำหน้าด้วย "$(WORKSPACE_ROOT)/" หากเป็นเส้นทางที่เกี่ยวข้อง และ เพิ่มลงในเส้นทางการค้นหาส่วนหัวสำหรับเป้าหมาย Xcode ที่เชื่อมโยง  | 
      
          defines
         | 
        
                     รายการสตริง ค่าเริ่มต้นคือ  -D แฟล็กเพิ่มเติมที่จะส่งไปยังคอมไพเลอร์ โดยควรอยู่ในรูปแบบ KEY=VALUE หรือเพียง KEY และจะ
          ส่งไปยังคอมไพเลอร์สำหรับเป้าหมายนี้ (เช่น copts
          ) รวมถึงไปยัง objc_ ทั้งหมดที่ขึ้นอยู่กับเป้าหมายนี้ด้วย
          ขึ้นอยู่กับการแทนที่ "Make variable" และ
          การแยกโทเค็น Bourne Shell
         | 
      
          enable_modules
         | 
        
                     บูลีน ค่าเริ่มต้นคือ   | 
      
          implementation_deps
         | 
        
                     รายการป้ายกำกับ ค่าเริ่มต้นคือ  deps โดยส่วนหัวและเส้นทางรวมของไลบรารีเหล่านี้ (และ
          การขึ้นต่อกันแบบทรานซิทีฟทั้งหมด) จะใช้สำหรับการคอมไพล์ไลบรารีนี้เท่านั้น และไม่ใช่ไลบรารีที่
          ขึ้นอยู่กับไลบรารีนี้ ไลบรารีที่ระบุด้วย 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 ทั้งหมดที่แสดงในกราฟการอ้างอิงแบบทรานซิทีฟของไบนารีนั้น  | 
      
          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
         | 
        
                     รายการป้ายกำกับ ที่กำหนดค่าไม่ได้ ค่าเริ่มต้นคือ   | 
      
xcode_config
ดูแหล่งที่มาของกฎxcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)
--xcode_version_config build
flag สามารถอ้างอิงเป้าหมายเดียวของกฎนี้เพื่อแปลแฟล็ก --xcode_version เป็นเวอร์ชัน xcode อย่างเป็นทางการที่ยอมรับได้
ซึ่งจะช่วยให้เลือกเวอร์ชัน xcode อย่างเป็นทางการจากชื่อแทนที่ลงทะเบียนไว้ได้
อาร์กิวเมนต์
| Attributes | |
|---|---|
name | 
        
           ชื่อ (ต้องระบุ) ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้  | 
      
          default
         | 
        
                     ป้ายกำกับ กำหนดค่าไม่ได้ ค่าเริ่มต้นคือ  xcode_version ระบบจะใช้เวอร์ชันที่ระบุโดยเป้าหมาย xcode_version ที่ให้มา
 ต้องระบุหากตั้งค่า versions ใดๆ อาจไม่ได้ตั้งค่าหากตั้งค่า remote_versions หรือ local_versions
         | 
      
          local_versions
         | 
        
                     ป้ายกำกับ กำหนดค่าไม่ได้ ค่าเริ่มต้นคือ  xcode_version เป้าหมายที่ใช้ได้ในพื้นที่
        โดยจะใช้ร่วมกับ local_versions เพื่อเลือกเวอร์ชันที่ใช้ร่วมกันได้
 อาจไม่ได้ตั้งค่าหากตั้งค่า versions
         | 
      
          remote_versions
         | 
        
                     ป้ายกำกับ กำหนดค่าไม่ได้ ค่าเริ่มต้นคือ  xcode_version เป้าหมายที่พร้อมใช้งานจากระยะไกล
        โดยจะใช้ร่วมกับ remote_versions เพื่อเลือกเวอร์ชันที่ใช้ร่วมกันได้
 อาจไม่ได้ตั้งค่าหากตั้งค่า versions
         | 
      
          versions
         | 
        
                     รายการป้ายกำกับ ที่กำหนดค่าไม่ได้ ค่าเริ่มต้นคือ  xcode_version ที่ยอมรับซึ่งอาจใช้ได้
        หากค่าของแฟล็ก xcode_version build ตรงกับชื่อแทนหรือหมายเลขเวอร์ชันของ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_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
         | 
        
                     สตริง กำหนดค่าไม่ได้ ต้องระบุ หมายเลขเวอร์ชันอย่างเป็นทางการของ Xcode |