Jak działają parametry Mogenerator, które mogę wysłać przez Xcode? [zamknięte]

Pomoc dla Mogeneratora jest bardzo minimalna. Do czego służą wszystkie parametry?

Author: Senseful, 2010-08-28

4 answers

Parametry, które działają zarówno za pomocą narzędzia wiersza poleceń, jak i Xcode:

  • --base-class: Nazwa klasy bazowej, od której dziedziczy "Klasa prywatna" (np. _MyObject.h). Spowoduje to również dodanie importu w postaci #import "MyManagedObject.h" do tego samego pliku .h. Wskazówka: jeśli Klasa, od której chcesz dziedziczyć, znajduje się w bibliotece, domyślna Instrukcja import nie będzie działać. Jako obejście możesz mieć dodatkowy poziom dziedziczenia dla każdego tworzonego projektu i mieć tę klasę dziedziczą z biblioteka włączona (np. Ustaw klasę bazową na MyProjectManagedObject, którą tworzysz ręcznie i dziedziczysz z MyLibManagedObject).
  • --template-path: ścieżka do miejsca, w którym znajdują się 4 .motemplate pliki. Jeśli nie jest to zapewnione, będzie wyglądać na wszystkie "katalogi obsługi aplikacji" (np. "/Library/Application Support/mogenerator/").
  • --template-group: nazwa podkatalogu pod katalogiem template-path do użycia.
  • --template-var arc=true: wymagane dla wygenerowanych plików do kompilacji podczas korzystania z ARC.
  • --output-dir: wyjście katalog wszystkich wygenerowanych plików.
  • --machine-dir: katalog, do którego będą wyświetlane _<class>.h i _<class>.m. Jeśli zdefiniowana jest również opcja --output-dir, parametr ten ma pierwszeństwo.
  • --human-dir: katalog, do którego zostaną wypisane <class>.h i <class>.m. Jeśli zdefiniowana jest również opcja --output-dir, parametr ten ma pierwszeństwo.
  • --includem: pełna ścieżka do pliku, który będzie zawierał wszystkie #import dla wszystkich utworzonych plików .h. Ten plik nie musi istnieć (tzn. zostanie stworzony dla Ciebie, jeśli nie). Ten plik nie zostanie automatycznie dołączony do projektu. Musisz dołączyć go ręcznie, przeciągając go do listy Grupy i pliki projektu.

Używanie ścieżek względnych w Xcode dla któregokolwiek z powyższych argumentów nie będzie działać, ponieważ katalog roboczy jest ustawiony na jeden z katalogów głównych systemu (np. Aplikacje, programista, Biblioteka lub System). (Nie miałem wystarczająco dużo czasu, aby dowiedzieć się, który z nich jest dokładnie.)

Parametry, których nie można użyć w Xcode:

  • --model: droga do .plik xcdatamodel, nie może być ustawiony w Xcode.
  • --list-source-files
  • --orphaned
  • --versioned
  • --help

Uruchamianie i wysyłanie parametrów do xmod przez Xcode:

(Aktualizacja: nie próbowałem tego na Xcode 4, tylko Xcode 3. Dla Xcode 4, można dodać mocenerator jako fazy budowania zamiast wykonując następujące kroki.)

  1. Idź do strony informacyjnej pliku .xcdatamodel.
  2. wybierz kartę Komentarze.
  3. Dodaj xmod do pola komentarzy, w jego własnej linii.
  4. za każdym razem, gdy zapiszesz model, zregeneruje on Pliki maszyny dla Ciebie.

Aby wysłać parametry, muszą być na własnej linii:

To działa:

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

I nawet to działa:

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

Ale to nie zadziała:

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

Uwaga: musisz zamknąć okno informacji, aby ustawienia zostały wykonane efekt.

 144
Author: Senseful,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-02 04:11:24

Począwszy od XCode 4, okno informacji nie jest już dostępne, więc nie martw się, jeśli nie możesz skonfigurować go zgodnie z odpowiedzią powyżej.

Użyj John Blanco ' s guide aby skonfigurować cel skryptowy, który pozwala na przekazywanie argumentów wiersza poleceń bezpośrednio do mogeneratora. Zauważ, że być może będziesz musiał nieco dostosować ścieżki w jego przykładzie... Wrzuć pwd do skryptu i sprawdź ścieżki do katalogu roboczego skryptu, jeśli nie zostanie uruchomiony od razu.

Na listę dostępne argumenty wiersza poleceń, uruchom mogenerator --help W Terminalu. AFAICT, wszystkie działają od etapu skryptowania.

Zobacz ta ODPOWIEDŹ dla innego sposobu wywołania mogenerator za pomocą "pre-action", jeśli chcesz automatycznie odbudować pliki maszynowe przy każdej kompilacji. Jest też dobra wskazówka na wprowadzenie skryptu mogenerator do VCS.

 6
Author: Kevin Clifton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:02

Oto wyjście z --help od wersji 1.27

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
Author: LostInTheTrees,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-22 17:58:59

Również, może będzie pomocne. Dla określenia, które paramy mogą być użyte dla

--template-var KEY=VALUE

Otwórz*.motemplate pliku i znaleźć ciąg znaków jak " TemplateVar."po punkcie zobaczysz nazwę parametru i będziesz w stanie zrozumieć, co robi.

Ten params ma wbudowany szablon

--template-var arc=true 
--template-var frc=true
--template-var modules=true
 0
Author: oks_ios,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-29 14:57:32