اول، یا:
- توزیع فعلی را از بخش Releases دانلود کرده و آن را از حالت فشرده خارج کنید یا
- منبع را دریافت کنید و آن را بسازید .
برای ترجمه یک فایل منبع جاوا (به عنوان مثال 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 یک اسکریپت پوششی است که کامپایلر C شما را فراخوانی میکند (معمولاً clang، با نام LLVM، کامپایلر C/C++/Objective-C اپل است ). برای ساخت فایل اجرایی:
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 با شکست مواجه شود، مشکل این است که iOS SDK پیدا نشد (هدر اینجاست).
- مطمئن شوید که Xcode را نصب کرده اید.
- ابزارهای خط فرمان را با اجرای
xcode-select --install
نصب کنید. -
xcodebuild -showsdks
اجرا کنید، که باید حداقل یک SDK را برای OS X، iOS و iOS Simulator نشان دهد. - اگر موفق نشد، برنامه Xcode را حذف کنید و به مرحله 1 بروید.
j2objcc
چه پرچم هایی می گیرد؟
اسکریپت j2objcc
فقط یک بسته بندی در اطراف کامپایلر Objective-C است. man cc
یا man clang
اجرا کنید تا گزینه های آن فهرست شود.
هنگام کامپایل کردن با j2objcc
، فایل های هدر (.h) پروژه من یافت نمی شود.
کامپایلر باید دایرکتوری را که فایل های ترجمه شده در آن قرار دارند، با استفاده از -I <directory>
بشناسد. بنابراین اگر فایلها با j2objc -d foo/bar ...
تولید شدهاند، دستور j2objcc
به -Ifoo/bar
نیاز دارد. اگر هیچ دایرکتوری خروجی در دستور j2objc
مشخص نشده بود، -I.
باید اضافه شود.
چگونه روی ویندوز یا لینوکس اجرا کنم؟
J2ObjC یک ابزار iOS است که برای توسعه در Mac OS X است. شما نمی توانید هیچ کد ترجمه شده ای را کامپایل کنید زیرا به یک OS X یا iOS SDK از اپل نیاز دارد، که لازم است SDK های آن فقط در Mac استفاده شوند.
با این حال، از آنجایی که مترجم J2ObjC خالص جاوا است، ترجمه را می توان در سیستم های دیگر انجام داد. در لینوکس، اسکریپت j2objc
باید بدون تغییر کار کند. استفاده از ویندوز به CygWin یا فراخوانی مستقیم جاوا نیاز دارد. برای فراخوانی مترجم بدون اسکریپت j2objc، از موارد زیر استفاده کنید که در آن J2OBJC_DIR
دایرکتوری است که فایل توزیع J2ObjC در آن از حالت فشرده خارج شده است:
java -Xbootclasspath:\lib\jre_emul.jar -jar J2OBJC_DIR\lib\j2objc.jar [j2objc-flags] [source files]