BazelCon 2022 מגיע בין 16 ל-17 בנובמבר לניו יורק באינטרנט.
הירשמו עוד היום!

כללי C

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

כללים

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 ל-Object-C. לאחר מכן, ניתן להשתמש בו בתור יחסי תלות של כללים objc_library ו-objc_binary. באתר J2ObjC ניתן למצוא מידע מפורט על J2ObjC עצמו.

ניתן לציין סימונים מותאמים אישית של JPObjC באמצעות סימון build --j2objc_translation_flags בשורת הפקודה.

חשוב לזכור שהקבצים המתורגמים הכלולים ביעד j2objc_library יערכו באמצעות תצורת ברירת המחדל של הידור, הגדרה זהה למקורות של כלל objc_library שלא צוינו אפשרויות הידור במאפיינים.

בנוסף, המערכת יוצרת כפילויות של הקוד שנוצר ברמת היעד, ולא ברמת המקור. אם יש לכם שני יעדי Java שונים שכוללים את אותם קובצי מקור של Java, ייתכן שתופיע שגיאת סמל משוכפל בזמן הקישור. הדרך הנכונה לפתור את הבעיה הזו היא להעביר את קובצי המקור המשותפים של Java אל יעד משותף נפרד שאפשר להסתמך עליו.

ארגומנטים

מאפיינים
name

Name; required

שם ייחודי ליעד הזה.

deps

List of labels; optional

רשימה של יעדים מסוג j2objc_library, java_library, java_import ו-java_proto_library שמכילים קובצי Java לתמלול.

כל היעדים java_library ו-java_import שניתן להגיע אליהם באופן זמני דרך exports, deps ו-runtime_deps יתורגמו ויקובצו. בשלב זה אין תמיכה בקבצים שנוצרו על ידי עיבוד הערות של Java או java_import יעדים שלא צוינו בהם srcjar.

התרגום של J2ObjC פועל באופן שונה בהתאם לסוג קובצי המקור של Java הכלולים בסגירה העקיפה. עבור כל קובץ מקור מסוג .Java שכלול ב-srcs מתוך java_library, ייווצר קובץ תואם מסוג .h ו- .m לכל צנצנת מקור הכלולה ב-srcs מתוך java_library או srcjar מתוך java_import, ייווצר קובץ מקור תואם עם סיומת h .ו-m .עם כל הקוד של המאגר.

המשתמשים יכולים לייבא את קובצי הכותרת שנוצרו על ידי J2ObjC בקוד שלהם. נתיבי הייבוא של הקבצים האלה הם הנתיב היחסי בין פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) המקורי של Java. לדוגמה, ל-//some/package/foo.java יש נתיב ייבוא של some/package/foo.h ול-//some/package/bar.srcjar יש את some/package/bar.h

אם כללי Proto_library ייסגרו בעקבות הכלל הזה, המערכת תיצור גם פרומו של J2ObjC ותיצור אותו ותקשר אותו ברמה הבינארית. עבור הפרוטוקול //some/proto/foo.proto, המשתמשים יכולים להפנות אל הקוד שנוצר באמצעות נתיב הייבוא some/proto/foo.j2objc.pb.h.

entry_classes

List of strings; optional

רשימת המחלקות ב-Java שמתבצעת עבורן הפניה ישירה לעותקי ה-ObjC שהמשתמשים שלחו. חובה לציין את המאפיין הזה אם התכונה --j2objc_dead_code_removal מופעלת. יש לציין את מחלקות Java בשמות הקנוניים שלהן, כפי שמוגדר במפרט השפה של Java. כשמסמנים את התיבה --j2objc_dead_code_removal, הרשימה של מחלקות הערכים תיאסף באופן ניסיוני ותשמש כנקודות כניסה לניתוח נתוני הקוד המבוזר. כיתות שלא נעשה בהן שימוש יוסרו מחבילת האפליקציות הסופית של ObjC.
jre_deps

List of labels; optional

הרשימה של ספריות האמולציה הנוספות של JRE שנדרשות על ידי כל הקוד של Java שתורגם על ידי הכלל 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.

ארגומנטים

מאפיינים
name

Name; required

שם ייחודי ליעד הזה.

hdrs

List of labels; optional

הרשימה של קובצי הכותרות C, C++ , Object-C ו-Object-C++ שפורסמו על ידי הספרייה הזו והמקורות שלה נכללים במקורות בכללים תלויים.

הכותרות האלה מתארות את הממשק הציבורי של הספרייה, והן יהיו זמינות להכללה על ידי מקורות בכלל הזה או בכללים תלויים. במקום זאת, יש לציין את הכותרות שלא ייכללו על ידי לקוח של הספרייה הזו במאפיין srcs.

הם יורכבו בנפרד מהמקור אם המודולים מופעלים.

Boolean; optional; default is False

אם בוחרים 1, כל חבילה או קובץ בינארי שתלויים (באופן ישיר או עקיף) בספרייה הזו יקשרו אל כל קובצי האובייקטים של הקבצים המפורטים ב-srcs וב-non_arc_srcs, גם אם חלק מהם לא מכילים סמלים שהקובץ הבינארי שלהם מפנה אליהם. אפשרות זו שימושית אם הקוד שלך לא נקרא במפורש על ידי הקוד שבקובץ הבינארי. למשל, אם הקוד נרשם לקבלת קריאה חוזרת (callback) משירות מסוים.
archives

List of labels; required

הרשימה של .a הקבצים שסופקו ליעדים של מטרה עסקית C שתלויים ביעד הזה.
includes

List of strings; optional

רשימה של #include/#import נתיבי חיפוש להוספה ליעד הזה ולכל היעדים התואמים. זאת כדי לתמוך בספריות של צד שלישי וקוד פתוח שלא מציינים את הנתיב המלא של סביבת העבודה בדוחות #import/#include.

המערכת מפרשת את הנתיבים באופן יחסי לספריית החבילה, ושורשי ה-genfile ו-bin (למשל blaze-genfiles/pkg/includedir ו-blaze-out/pkg/includedir) כלולים בנוסף ל-root של הלקוח.

בניגוד ל-CLDS, הסימונים האלה מתווספים לכלל הזה ולכל כלל שתלוי בו. (הערה: לא הכללים תלויים בכך!) חשוב להיזהר מאוד, כי ייתכן שהאפקט הזה ישפיע על התוצאות. אם יש לכם ספק, תוכלו להוסיף "-iquote" סימונים במקום זאת ב-CLDS.

sdk_dylibs

List of strings; optional

שמות של ספריות SDK (dy .b) שאליהן יש לקשר. לדוגמה, "libz" או "libarchive". "libc++" נכלל באופן אוטומטי אם לבינארי יש מקורות C++ או target-C++ בעץ התלות שלו. כשמקשרים קבצים בינאריים, המערכת משתמשת בכל הספריות שמופיעות בתרשים התלויות הבינארי של הקובץ.
sdk_frameworks

List of strings; optional

שמות של מסגרות SDK שיש לקשר אליהן (למשל "AddressBook", "QuartzCore" ). "UIKit" ו- "מייסד/&&; נכללים תמיד בבנייה לפלטפורמות iOS, tvOS ו-watchOS. ב-macOS, רק "foundation" תמיד נכלל.

כשמקשרים נתונים בינאריים של Apple ברמה העליונה, כל מסגרות ה-SDK המפורטות בתרשים התלויות הבינארי הזה מקושרות.

sdk_includes

List of strings; optional

רשימה של #include/#import נתיבי חיפוש להוספה ליעד הזה ולכל היעדים התואמים, שבהם כל נתיב הוא יחסי אל $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

רשימת הקבצים C, C++ , Object-C ו-Target-C++ הכלולים ככותרות על ידי קובצי המקור בכלל הזה או שמשתמשים בספרייה הזו. בניגוד ל-hd, הערכים האלה לא יעובדו בנפרד מהמקורות.
weak_sdk_frameworks

List of strings; optional

שמות של מסגרות SDK שרוצים ליצור עבורם קישור חלש. לדוגמה, "MediaAccessibility". בהשוואה למסגרות SDK שמקושרות באופן קבוע, סמלים ממסגרות עם קישורים חלשים לא גורמים לשגיאה אם הם לא קיימים בזמן הריצה.

objc_library

objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, 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)

כלל זה מפיק ספרייה סטטית מקובצי המקור הנתונים C-אובייקטיביים.

ארגומנטים

מאפיינים
name

Name; required

שם ייחודי ליעד הזה.

deps

List of labels; optional

רשימת היעדים שמקושרים יחד כדי ליצור את החבילה הסופית.
srcs

List of labels; optional

רשימה של קובצי מקור וכותרת מסוג C, C++ , Object-C ו-Object-C++ ו/או קובצי הרכבה (`.s`, `.S` או `.asm`), שעובדו כדי ליצור את היעד של הספרייה. אלה הקבצים שנערכו בהם צ'ק-אין, וגם קבצים שנוצרו. קובצי המקור מורכבים מקובצי .o עם Clang. אפשר לכלול ולייבא קובצי כותרת בכל מקור או כותרת במאפיין srcs של היעד הזה, אבל לא לפי כותרות ב-Hrd או יעדים שתלויים בכלל הזה. כמו כן, אפשר לקבל קובצי .o שהוכנו מראש בתור srcs. עליך להקפיד לשמור על עקביות בארכיטקטורה של קובצי .o שסופקו ושל ה-build כדי להימנע משגיאות של קישור סמלים.
hdrs

List of labels; optional

הרשימה של קובצי הכותרות C, C++ , Object-C ו-Object-C++ שפורסמו על ידי הספרייה הזו והמקורות שלה נכללים במקורות בכללים תלויים.

הכותרות האלה מתארות את הממשק הציבורי של הספרייה, והן יהיו זמינות להכללה על ידי מקורות בכלל הזה או בכללים תלויים. במקום זאת, יש לציין את הכותרות שלא ייכללו על ידי לקוח של הספרייה הזו במאפיין srcs.

הם יורכבו בנפרד מהמקור אם המודולים מופעלים.

Boolean; optional; default is False

אם בוחרים 1, כל חבילה או קובץ בינארי שתלויים (באופן ישיר או עקיף) בספרייה הזו יקשרו אל כל קובצי האובייקטים של הקבצים המפורטים ב-srcs וב-non_arc_srcs, גם אם חלק מהם לא מכילים סמלים שהקובץ הבינארי שלהם מפנה אליהם. אפשרות זו שימושית אם הקוד שלך לא נקרא במפורש על ידי הקוד שבקובץ הבינארי. למשל, אם הקוד נרשם לקבלת קריאה חוזרת (callback) משירות מסוים.
copts

List of strings; optional

סימונים נוספים שצריך להעביר אל המהדר. כפוף להחלפה "make variable" ו-אסימון מעטפת בור. הסימונים האלה יחולו רק על היעד הזה, ולא על הגורמים התלויים בו או על הגורמים התלויים בו.

שימו לב שעבור פרויקט Xcode שנוצר, מתבצע ניתוח של נתיבי ספרייה שצוינו באמצעות "-I" סימונים בפקקים, כשלפניהם "$(WORKSPACE_ROOT)/" אם מדובר בנתיבים יחסיים, והם נוספים לנתיבי החיפוש של הכותרת עבור יעד Xcode המשויך.

defines

List of strings; optional

-D סימונים נוספים להעברה אל המהדר. הם צריכים להיות בפורמט KEY=VALUE או פשוט KEY, ולהעביר אותם לא רק למהדר המהלך של היעד הזה (כפי שהוא copts ), אלא גם לכל התלויים של objc_ ביעד הזה. כפוף להחלפה "make variable" ו-אסימון מעטפת בור.
enable_modules

Boolean; optional; default is False

הפעלת תמיכה במודול clang (באמצעות -fmodules). אם מגדירים את הערך של 1, אפשר @import של כותרות מערכת ויעדים נוספים: @import UIKit; @import path_to_package_target;
includes

List of strings; optional

רשימה של #include/#import נתיבי חיפוש להוספה ליעד הזה ולכל היעדים התואמים. זאת כדי לתמוך בספריות של צד שלישי וקוד פתוח שלא מציינים את הנתיב המלא של סביבת העבודה בדוחות #import/#include.

המערכת מפרשת את הנתיבים באופן יחסי לספריית החבילה, ושורשי ה-genfile ו-bin (למשל blaze-genfiles/pkg/includedir ו-blaze-out/pkg/includedir) כלולים בנוסף ל-root של הלקוח.

בניגוד ל-CLDS, הסימונים האלה מתווספים לכלל הזה ולכל כלל שתלוי בו. (הערה: לא הכללים תלויים בכך!) חשוב להיזהר מאוד, כי ייתכן שהאפקט הזה ישפיע על התוצאות. אם יש לכם ספק, תוכלו להוסיף "-iquote" סימונים במקום זאת ב-CLDS.

linkopts

List of strings; optional

סימונים נוספים שצריך להעביר לקישור.
module_map

Label; optional

מפה מותאמת אישית של מודול קלאנג עבור היעד הזה. לא מומלץ להשתמש במפה של מודול מותאם אישית. רוב המשתמשים צריכים להשתמש במפות מודול שנוצרו על ידי Bazel. אם צוין, Bazel לא תיצור מפת מודול עבור היעד הזה, אבל תעביר את מפת המודול שצוינה אל המהדר.
module_name

String; optional

מגדיר את שם המודול של יעד זה. כברירת מחדל, שם המודול הוא נתיב היעד כאשר כל הסמלים המיוחדים מוחלפים על ידי _. למשל, ניתן לייבא את //foo/baz:bar כ-foo_baz_bar.
non_arc_srcs

List of labels; optional

רשימת הקבצים של יעד C שמעובדים כדי ליצור את היעד של הספרייה שלא משתמשים ב-ARC. אופן הטיפול בקבצים שבמאפיין הזה דומה מאוד לאלה שבמאפיין srcs, אבל הידור שלהם פועל בלי ARC מופעל.
pch

Label; optional

קובץ כותרת שאותו ניתן להוסיף לפני כל קובץ מקור (מורכב גם מ-ARC וגם מ-ARC). מומלץ לא להשתמש בקובצי pch באופן פעיל בקובצי BUILD, ויש לראות בכך הוצאה משימוש. מכיוון שקובצי Pch לא מוטמעים מראש, לא מדובר בשיפור של מהירות build, אלא רק בתלות גלובלית. מנקודת מבט של יעילות build, למעשה עדיף לכלול את מה שנחוץ לך ישירות במקורות שבהם יש לך צורך.
runtime_deps

List of labels; optional

רשימת היעדים של מסגרת שנטען מאוחר בזמן הריצה. הם כלולים ב-App Bundle, אבל לא מקושרים אליו בזמן היצירה.
sdk_dylibs

List of strings; optional

שמות של ספריות SDK (dy .b) שאליהן יש לקשר. לדוגמה, "libz" או "libarchive". "libc++" נכלל באופן אוטומטי אם לבינארי יש מקורות C++ או target-C++ בעץ התלות שלו. כשמקשרים קבצים בינאריים, המערכת משתמשת בכל הספריות שמופיעות בתרשים התלויות הבינארי של הקובץ.
sdk_frameworks

List of strings; optional

שמות של מסגרות SDK שיש לקשר אליהן (למשל "AddressBook", "QuartzCore" ). "UIKit" ו- "מייסד/&&; נכללים תמיד בבנייה לפלטפורמות iOS, tvOS ו-watchOS. ב-macOS, רק "foundation" תמיד נכלל.

כשמקשרים נתונים בינאריים של Apple ברמה העליונה, כל מסגרות ה-SDK המפורטות בתרשים התלויות הבינארי הזה מקושרות.

sdk_includes

List of strings; optional

רשימה של #include/#import נתיבי חיפוש להוספה ליעד הזה ולכל היעדים התואמים, שבהם כל נתיב הוא יחסי אל $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

רשימת הקבצים C, C++ , Object-C ו-Target-C++ הכלולים ככותרות על ידי קובצי המקור בכלל הזה או שמשתמשים בספרייה הזו. בניגוד ל-hd, הערכים האלה לא יעובדו בנפרד מהמקורות.
weak_sdk_frameworks

List of strings; optional

שמות של מסגרות SDK שרוצים ליצור עבורם קישור חלש. לדוגמה, "MediaAccessibility". בהשוואה למסגרות SDK שמקושרות באופן קבוע, סמלים ממסגרות עם קישורים חלשים לא גורמים לשגיאה אם הם לא קיימים בזמן הריצה.

זמין_קודי קודים

available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

שני יעדים של הכלל הזה יכולים להיות תלויים במופע של כלל xcode_config כדי לציין את גרסאות ה-xcode הזמינות מרחוק ומקומיות. הפעולה הזו מאפשרת לבחור גרסת xcode רשמית מ-xcodes הזמינים ביחד.

ארגומנטים

מאפיינים
name

Name; required

שם ייחודי ליעד הזה.

default

Label; required; nonconfigurable

גרסת ה-xcode המוגדרת כברירת מחדל בפלטפורמה הזו.
versions

List of labels; optional; nonconfigurable

גרסאות ה-xcode שזמינות בפלטפורמה הזו.

Xcode_config

xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

ניתן לסמן יעד יחיד של הכלל הזה על ידי סימון ה-build של --xcode_version_config, כדי לתרגם את הדגל --xcode_version לגרסת xcode רשמית מקובלת. המדיניות הזו מאפשרת לבחור גרסה רשמית של xcode ממספר כינויים רשומים.

ארגומנטים

מאפיינים
name

Name; required

שם ייחודי ליעד הזה.

default

Label; optional; nonconfigurable

גרסת ברירת המחדל של xcode לשימוש. יש להשתמש בגרסה שצוינה עבור יעד ה-xcode_version שצוין אם לא צוין סימון build של xcode_version. פעולה זו נדרשת אם מוגדרים versions. לא ניתן להגדיר זאת אם המדיניות remote_versions או local_versions מוגדרת.
local_versions

Label; optional; nonconfigurable

xcode_version targets that are available locally. These are used along with local_versions to select a mutually available version. This may not be set if versions is set.
remote_versions

Label; optional; nonconfigurable

xcode_version targets that are available remotely. These are used along with remote_versions to select a mutually available version. This may not be set if versions is set.
versions

List of labels; optional; nonconfigurable

xcode_version targets that may be used. If the value of the xcode_version build flag matches one of the aliases or version number of any of the given xcode_version targets, the matching target will be used. This may not be set if remote_versions or local_versions is set. אושר

Xcode_version

xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)

מייצג גרסת xcode רשמית אחת עם כינויים קבילים עבור גרסת xcode המקובלת. יש לעיין בכלל xcode_config.

ארגומנטים

מאפיינים
name

Name; required

שם ייחודי ליעד הזה.

default_ios_sdk_version

String; optional; nonconfigurable

גרסת ה-ios sdk שנעשה בה שימוש כברירת מחדל כשמשתמשים בגרסה הזו של xcode. סימון ה-build של ios_sdk_version יחליף את הערך שצוין כאן.
default_macos_sdk_version

String; optional; nonconfigurable

גרסת macosx sdk שנמצאת בשימוש כברירת מחדל כשמשתמשים בגרסה הזו של xcode. סימון ה-build של macos_sdk_version יחליף את הערך שצוין כאן.
default_tvos_sdk_version

String; optional; nonconfigurable

גרסת vos sdk שמשמשת כברירת מחדל כשמשתמשים בגרסה הזו של xcode. סימון ה-build של tvos_sdk_version יחליף את הערך שצוין כאן.
default_watchos_sdk_version

String; optional; nonconfigurable

גרסת ה-sdk של Watchos שבה נעשה שימוש כברירת מחדל כשמשתמשים בגרסה הזו של xcode. סימון ה-build של watchos_sdk_version יחליף את הערך שצוין כאן.
version

String; required; nonconfigurable

המספר הרשמי של הגרסה של Xcode.