Подтвердить что ты не робот

Как работают параметры Mogenerator, которые я могу отправить через Xcode?

Помощь для Mogenerator очень минимальна. Что делают все параметры?

4b9b3361

Ответ 1

Параметры, которые работают как с помощью утилиты командной строки, так и с помощью Xcode:

  • --base-class: имя af в базовом классе, который наследует "частный класс" (например, _MyObject.h). Это также добавит импорт в виде #import "MyManagedObject.h" в тот же файл .h. Совет. Если класс, который вы хотите наследовать, находится в библиотеке, инструкция импорта по умолчанию не будет работать. В качестве обходного пути вы можете получить дополнительный уровень наследования для каждого создаваемого вами проекта и наследовать этот класс из библиотеки (например, установить базовый класс в MyProjectManagedObject, который вы создаете вручную, и наследовать от MyLibManagedObject).
  • --template-path: путь к файлу 4 .motemplate. Когда это не предусмотрено, оно будет смотреть на все "каталоги поддержки приложений" (например, "/Library/Application Support/mogenerator/").
  • --template-group: имя подкаталога под используемым каталогом template-path.
  • --template-var arc=true: Обязательный для сгенерированных файлов для компиляции при использовании 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

Запуск и отправка параметров в xmod через Xcode:

(Обновление: я не пробовал это на Xcode 4, только Xcode 3. Для Xcode 4 вы можете добавить mogenerator в качестве фазы сборки вместо следующих шагов.)

  • Перейдите на информационную страницу файла .xcdatamodel.
  • Выберите вкладку "Комментарии".
  • Добавить xmod в поле комментариев в своей строке.
  • Каждый раз, когда вы сохраняете модель, она восстанавливает файлы машин для вас.

Чтобы отправлять параметры, они должны быть в отдельной строке:

Это работает:

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

И даже это работает:

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

Но это не сработает:

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

Примечание. Вы должны закрыть окно "Информация", чтобы настройки вступили в силу.

Ответ 2

Начиная с XCode 4, окно "Информация" больше не доступно, поэтому не беспокойтесь, если вы не можете его настроить, как было сказано выше.

Используйте John Blanco guide, чтобы настроить целевой скрипт, который позволяет передавать аргументы командной строки непосредственно в movenerator. Обратите внимание, что вам может потребоваться немного изменить пути в его примере... загрузить pwd в script и проверить пути к рабочему каталогу script, если он не запускается для вас сразу.

Для получения списка доступных аргументов командной строки запустите mogenerator --help в терминале. AFAICT, все они работают со стадии сценариев.

См. этот ответ для другого способа вызова mogenerator посредством "предварительного действия", если вы хотите автоматически перестраивать свои машинные файлы с каждой сборкой. Там также неплохой совет по установке mogenerator script в ваш VCS.

Ответ 3

Вот результат от --help от версии 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.

Ответ 4

Кроме того, возможно, будет полезно. Для определения того, какие параметры можно использовать для

--template-var KEY=VALUE

открыть файл *.motemplate и найти строку типа "TemplateVar". после точки вы увидите имя параметра и сможете понять, что он делает.

Этот параметр имеет встроенный шаблон

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