web-dev-qa-db-ja.com

Mogeneratorのパラメーターはどのように機能しますか?Xcodeで送信できますか?

Mogeneratorのヘルプはごくわずかです。すべてのパラメーターは何をしますか?

64
Senseful

コマンドラインユーティリティとXcodeの両方で機能するパラメーター:

  • --base-class:「プライベートクラス」(例:_MyObject.h)が継承する基本クラスの名前。これにより、#import "MyManagedObject.h"の形式で同じ.hファイルにインポートも追加されます。ヒント:継承元のクラスがライブラリーにある場合、デフォルトのインポートステートメントは機能しません。回避策として、作成するプロジェクトごとに余分なレベルの継承を設定し、そのクラスをライブラリから継承することができます(たとえば、基本クラスを手動で作成してMyProjectManagedObjectから継承するMyLibManagedObjectに設定します)。
  • --template-path:4つの.motemplateファイルがある場所へのパス。これが提供されていない場合、すべての「アプリサポートディレクトリ」(例:"/Library/Application Support/mogenerator/")を確認します。
  • --template-group:使用するtemplate-pathディレクトリの下のサブディレクトリ名。
  • --template-var arc=trueRequired生成されたファイルをコンパイルするにはARCを使用します。
  • --output-dir:生成されたすべてのファイルの出力ディレクトリ。
  • --machine-dir_<class>.hおよび_<class>.mが出力されるディレクトリ。 --output-dirも定義されている場合、このパラメーターが優先されます。
  • --human-dir<class>.hおよび<class>.mが出力されるディレクトリ。 --output-dirも定義されている場合、このパラメーターが優先されます。
  • --includem:作成されるすべての#importファイルのすべての.hを含むファイルへのフルパス。このファイルは存在する必要はありません(つまり、存在しない場合は作成されます)。このファイルは、プロジェクトに自動的に含まれません。プロジェクトの[グループとファイル]リストにドラッグして、手動で含める必要があります。

作業ディレクトリがシステムのルートディレクトリ(アプリケーション、開発者、ライブラリ、システムなど)のいずれかに設定されているため、上記の引数のいずれかにXcodeで相対パスを使用しても機能しません。 (これらのどれが正確であるかを判断するのに十分な時間がありませんでした。)

Xcodeで使用できないパラメーター:

  • --model:.xcdatamodelファイルへのパスは、Xcodeで設定できません。
  • --list-source-files
  • --orphaned
  • --versioned
  • --help

Xcode経由でxmodにパラメーターを実行および送信する:

(更新:Xcode 3ではXcode 3のみでこれを試していません。Xcode4では、次の手順に従う代わりに、 ビルドフェーズとしてmogeneratorを追加 できます。)

  1. .xcdatamodelファイルの情報ページに移動します。
  2. [コメント]タブを選択します。
  3. xmodを独自の行のコメントフィールドに追加します。
  4. モデルを保存するたびに、マシンファイルが再生成されます。

パラメーターを送信するには、独自の行にある必要があります。

これは動作します:

xmod
--base-class CLASS
--template-path PATH

そしてこれでも動作します:

xmod
--base-class CLASS --template-path PATH

しかし、これは機能しません:

xmod --base-class CLASS --template-path PATH

注:設定を有効にするには、情報ウィンドウを閉じる必要があります。

144
Senseful

XCode 4の時点では、情報ウィンドウは使用できなくなっているため、上記のように設定できない場合でも心配する必要はありません。

John Blancoのガイド を使用して、コマンドライン引数を直接Mogeneratorに渡すことができるスクリプトターゲットを設定します。彼の例のパスを少し調整する必要があるかもしれないことに注意してください...スクリプトでpwdを投げ、すぐに実行されない場合はスクリプトの作業ディレクトリに対してパスをチェックします。

利用可能なコマンドライン引数のリストについては、mogenerator --helpターミナル。 AFAICT、それらはすべてスクリプトのステップから機能します。

ビルドごとにマシンファイルを自動的に再構築する場合は、「事前アクション」を介してmogeneratorを呼び出す別の方法について この回答 を参照してください。ジェネレータースクリプトをVCSに配置するためのヒントもあります。

6
Kevin Clifton

バージョン1.27以降の--helpの出力を次に示します。

mogenerator: Usage [OPTIONS] <argument> [...]

  -m, --model MODEL             Path to model
  -C, --configuration CONFIG    Only consider entities included in the named configuration
      --base-class CLASS        Custom base class
      --base-class-import TEXT        Imports base class as #import TEXT
      --base-class-force CLASS  Same as --base-class except will force all entities to have the specified base class. Even if a super entity exists
      --includem FILE           Generate aggregate include file for .m files for both human and machine generated source files
      --includeh FILE           Generate aggregate include file for .h files for human generated source files only
      --template-path PATH      Path to templates (absolute or relative to model path)
      --template-group NAME     Name of template group
      --template-var KEY=VALUE  A key-value pair to pass to the template file. There can be many of these.
  -O, --output-dir DIR          Output directory
  -M, --machine-dir DIR         Output directory for machine files
  -H, --human-dir DIR           Output directory for human files
      --list-source-files       Only list model-related source files
      --orphaned                Only list files whose entities no longer exist
      --version                 Display version and exit
  -h, --help                    Display this help and exit

Implements generation gap codegen pattern for Core Data.
Inspired by eogenerator.
1
LostInTheTrees

また、役に立つかもしれません。使用できるパラメータを決定するため

--template-var KEY=VALUE

* .motemplateファイルを開き、「TemplateVar」などの文字列を見つけます。その後、パラメータ名が表示され、その機能を理解できるようになります。

このパラメーターには組み込みのテンプレートがあります

--template-var arc=true 
--template-var frc=true
--template-var modules=true
0
oks_ios