Помощь для Mogenerator очень минимальна. Что делают все параметры?
Как работают параметры Mogenerator, которые я могу отправить через Xcode?
Ответ 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