3

Xcode のビルド規則の「出力ファイル」セクションに式を含めることはできますか? 例えば:

$(DERIVED_FILE_DIR)$(echo "/dynamic/dir")/$(INPUT_FILE_BASE).m

具体的には、Java ファイルを j2objc で変換すると、結果のファイルは Java パッケージ (例: ) に基づいてサブフォルダーに保存されます$(DERIVED_FILE_DIR)/com/google/Class.[hm]。これは--no-package-directories、異なるパッケージでファイル名が重複しているため使用できません。

Xcode は正しい場所で出力ファイルを検索する方法を認識していないため、問題はOutput Filesにあります。デフォルトの場所は ですが$(DERIVED_FILE_DIR)/$(INPUT_FILE_BASE).m、正しいパスを挿入するには文字列置換を実行する必要があります。ただし、$(expression)存在しなかったため、追加された式は無視されます。

ここに画像の説明を入力

SCRIPT_OUTPUT_FILE_Xカスタムスクリプトから変数をエクスポートして出力ファイルで使用しようとしましたが、カスタムスクリプトが実行される前に出力ファイルが変換されるため、それも機能しません。

ここに画像の説明を入力

4

2 に答える 2

1

残念ながら、Xcode のビルド サポートはかなり原始的です (たとえば、make は 3 番目に古いものです :-)。試すオプションの 1 つは、Java ソースを分割して、同じ名前の 2 つのクラスが異なるサブプロジェクトにあるようにすることです。その後、サブプロジェクトごとに異なるプレフィックスを使用すると、名前が明確になります。

より壊れやすいが、おそらくより単純なアプローチは、2 つのクラスのいずれかに個別のルールを定義して、一意のプレフィックスを割り当てることです。次に、ルールが重複しないように、初期のビルド フェーズを追加して、他の Java クラスの前に変換します。

于 2014-07-21T19:50:05.430 に答える
0

私にとっては、2番目の代替手段が機能します(Xcode 7.3.x)-ある程度まで。私のルールは Java ではなく、Google Protobuf のためのものであり、生成されたコードでソース .proto ファイルと同じ階層 (Java パッケージ階層など) を維持しようとしました。確かに、ファイル (.pb.cc および .pb.h) は、Build/Intermediates/myProject.build/Debug/DerivedSources ディレクトリ内に、階層と共に、期待どおりに作成されました。

ただし、Xcode は通常、生成された出力を現在のターゲットに継続してコンパイルすることを認識していますが、その下のサブディレクトリ内ではなく、実際の ${DERIVED_FILE} 内のファイルのみを検索するため、これは機能しません。

「出力ファイルは SCRIPT_OUTPUT_FILE_X に変換されます」と説明してください。理解できません。

于 2016-10-25T15:05:59.110 に答える