3

以前、Google の Java から Objective-C (J2ObjC) へのコンバーターの古いバージョン (バージョン 0.5.2) を使用したことがあり、Java ファイルのフォルダー全体を同等の Objective-C ファイルに変換するのは簡単でした (そして、その際のディレクトリ構造)。次のシェル実行可能ファイルを実行する必要がありました。

$ ./run.sh —-preservedirs <path to input folder>

J2ObjC の最新バージョン (つまり、バージョン 0.9.1) をダウンロードしましたが、 「j2obc」を使用して単一の Java ファイルではなく、Java ファイルのフォルダー全体を変換する方法が、 Getting Startedページまたは他の場所から明確ではありません。実行可能。はじめにページで提供されている唯一の例は、次のように、他の場所に依存関係/インポートがない単一の Java ファイルを変換することです。

$ ./j2objc Hello.java

翻訳するすべてのサブパッケージと Java ファイルを含む「com」パッケージである「input」という名前のフォルダーがあると仮定して、パッケージ全体を翻訳する方法の例を誰か教えてもらえますか?

4

2 に答える 2

7

プロジェクト全体をビルドするには、ソース ルートを -sourcepath に追加し、find コマンドを使用してすべての Java ソースを見つけます。たとえば、Square.com の Dagger ライブラリをビルドするには:

$ export J2OBJC=~/j2objc   # change to wherever your distribution is
$ cd ~/src/dagger/core
$ $J2OBJC/j2objc -d build_output -sourcepath src/main/java \
    -classpath $J2OBJC/lib/javax-inject.jar \
    `find src/main/java -name '*.java'`

生成されたすべての .h および .m ファイルは、パッケージに応じたサブディレクトリ内の build_output ディレクトリにあります (javac のように)。すべての .m ファイルをスタティック ライブラリにコンパイルするには、次を使用します。

$ cd build_output
$ j2objcc -c -I. `find . -name '*.m'`
$ libtool -static -o libdagger.a *.o
于 2015-03-31T17:40:12.187 に答える
2

に組み込まれているより良い方法がない場合は、のフラグrun.shを使用できます。find-exec

find <path to input folder> -type f -exec --preservedirs ./run.sh {} \;

または、xargs同じタイプで複数のファイルを実行するために使用できます。

find <path to input folder> -type f | xargs ./run.sh --preservedirs

-name "*.java"(ディレクトリに Java 以外のファイルがある場合は、find 引数に追加する必要がある場合もあります)。

于 2015-03-31T09:53:28.593 に答える