まず、以下のいずれかを行います。
- リリース セクションから現在のディストリビューションをダウンロードして解凍します。
- ソースを入手して、ビルドします。
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 は、C コンパイラ(通常は clang、別名 LLVM、Apple 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
を実行します。これにより、OS X、iOS、iOS Simulator 用の SDK が 1 つ以上表示されます。- 失敗した場合は、Xcode アプリケーションを削除して手順 1 に進みます。
j2objcc
が取るフラグ
j2objcc
スクリプトは、Objective-C コンパイラ clang のラッパーです。
man cc
または man clang
を実行して、オプションを一覧表示します。
j2objcc
でコンパイルすると、プロジェクトのヘッダー(.h)ファイルが見つかりません。
コンパイラは、-I <directory>
を使用して、翻訳されたファイルが存在するディレクトリを認識している必要があります。ファイルが j2objc -d foo/bar ...
で生成された場合、j2objcc
コマンドには -Ifoo/bar
が必要です。j2objc
コマンドで出力ディレクトリが指定されていない場合は、-I.
を追加する必要があります。
Windows または Linux で実行するにはどうすればよいですか?
J2ObjC は Mac OS X での開発向けの iOS ツールです。翻訳されたコードはコンパイルできません。Apple の OS X SDK または iOS SDK(Mac でのみ SDK を使用する必要があるため)が必要です。
ただし、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]