קודם כול, מקבלים את המקור ליצור אותו.
כדי לתרגם קובץ מקור ב-Java (לדוגמה, Hello.Java):
public class Hello {
public static void main(String[] args) {
System.out.println("hello, world");
}
}
j2objc Hello.java
translating Hello.java Translated 1 file: 0 errors, 0 warnings
כדי להדר את הקובץ המתורגם:
j2objcc -c Hello.m
j2objcc הוא סקריפט wrapper שמפעיל את המהדר של C (נקרא בדרך כלל clang, שנקרא גם LLVM, C/C++/Objective-C של Apple compiler). כדי ליצור את קובץ ההפעלה:
j2objcc -o hello Hello.o
./hello Hello
hello, world
j2objcc מעביר את האפשרויות שצוינו לגבי המהדר של Objective-C.
לדוגמה, כדי לתרגם ולבנות עם סמלים של ניפוי באגים, משתמשים בדגל -g
:
j2objcc -g -o hello Hello.m
שאלות נפוצות
כשמפעילים את j2objcc
, מקבלים תלונה על כך ש-"foundation/Foundation.h" לא נמצא.
אם 'הידור' נכשל כי הבסיס/Foundation.h לא נמצאו, הבעיה הוא שה-SDK ל-iOS לא נמצא (שם הכותרת).
- מוודאים ש-Xcode מותקן.
- כדי להתקין את כלי שורת הפקודה, צריך להריץ את
xcode-select --install
. - מריצים את הפקודה
xcodebuild -showsdks
, שאמורה להציג לפחות ערכת SDK אחת עבור OS X, iOS, ובסימולטור של iOS. - אם זה נכשל, מוחקים את אפליקציית Xcode ועוברים לשלב 1.
אילו סימונים נכללים ב-j2objcc
?
הסקריפט j2objcc
הוא רק wrapper של מהדר Objective-C.
מריצים את הפקודה man cc
או את הפקודה man clang
כדי להציג את האפשרויות השונות.
במהלך ההידור עם j2objcc
, לא ניתן למצוא את קובצי הכותרת (h.) של הפרויקט שלי.
המהדר צריך לדעת את הספרייה שבה נמצאים הקבצים המתורגמים.
באמצעות -I <directory>
. כך שאם הקבצים נוצרו באמצעות
j2objc -d foo/bar ...
,
בפקודה j2objcc
צריכה להיות -Ifoo/bar
. אם לא הייתה ספריית פלט
שצוין בפקודה j2objc
, אז צריך להוסיף את -I.
.
איך פועלים ב-Windows או ב-Linux?
J2ObjC הוא כלי ל-iOS שמיועד לפיתוח ב-Mac OS X. אין לך אפשרות להדר כל קוד מתורגם, כי הוא דורש OS X או iOS SDK מ-Apple, דורשת שימוש בערכות ה-SDK שלה רק במחשבי Mac.
עם זאת, מכיוון שהמתרגם J2ObjC הוא בשפת Java טהור, ניתן לבצע תרגום
במערכות אחרות. ב-Linux, הסקריפט j2objc
אמור לפעול ללא שינוי. חלונות
צריך להשתמש ב-CygWin או בהפעלת Java
ישירות. כדי להפעיל את המתרגם ללא הסקריפט j2objc, יש להשתמש ב
שבו J2OBJC_DIR
הוא הספרייה שבה
בוטלה הדחיסה של קובץ ההפצה J2ObjC:
java -Xbootclasspath:\lib\jre_emul.jar -jar J2OBJC_DIR\lib\j2objc.jar [j2objc-flags] [source files]