קודם כל,
- מורידים את ההפצה הנוכחית מקטע פריטי התוכן ופורסים אותה, או
- משיגים את המקור ויוצרים אותו.
כדי לתרגם קובץ מקור ב-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). כדי ליצור את קובץ ההפעלה:
j2objcc -o hello Hello.o
./hello Hello
hello, world
j2objcc מעביר את כל האפשרויות שציינתם עבור מהדר Objective-C.
לדוגמה, כדי לתרגם וליצור בעזרת סמלים של ניפוי באגים, צריך להשתמש בדגל -g
:
j2objcc -g -o hello Hello.m
שאלות נפוצות
כשמפעילים את j2objcc
, התלונה היא ש-"Foundation/Foundation.h" לא נמצא.
אם ההידור נכשל כי לא ניתן למצוא את Foundation/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
אמור לפעול ללא שינוי. כדי להשתמש ב-Windows צריך להפעיל את CygWin או להפעיל את Java ישירות. כדי להפעיל את המתרגם ללא הסקריפט j2objc, משתמשים
בנקודה הבאה שבה J2OBJC_DIR
הוא הספרייה שבה בוצע חילוץ קובץ ההפצה J2ObjC:
java -Xbootclasspath:\lib\jre_emul.jar -jar J2OBJC_DIR\lib\j2objc.jar [j2objc-flags] [source files]