Mogenerator参数如何工作,我可以通过Xcode发送哪些参数?[关闭]


Answers:


148

通过命令行实用程序和Xcode均可工作的参数:

  • --base-class:基类的名称,“私有类”(例如_MyObject.h)将继承自该基类。这还将以的形式将导入添加#import "MyManagedObject.h"到同一.h文件。提示:如果要继承的类位于库中,则默认的import语句将不起作用。作为一种解决方法,您可以为创建的每个项目增加一个继承级别,并使该类从库中继承(例如,设置要MyProjectManagedObject手动创建并从其继承的基类MyLibManagedObject)。
  • --template-path:这4个.motemplate文件所在的路径。如果未提供此选项,它将查看所​​有“应用程序支持目录”(例如"/Library/Application Support/mogenerator/")。
  • --template-grouptemplate-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。该文件不需要存在(即如果不存在,将为您创建)。该文件不会自动为您包括在项目中。您必须通过将其拖动到项目的“组和文件”列表中来手动添加它。

由于工作目录设置为系统的根目录之一(例如,Applications,Developer,Library或System),因此无法在Xcode中为上述任何参数使用相对路径。(我没有足够的时间弄清楚到底是哪一个。)

无法在Xcode中使用的参数:

  • --model:.xcdatamodel文件的路径不能在Xcode中设置。
  • --list-source-files
  • --orphaned
  • --versioned
  • --help

通过Xcode运行并向xmod发送参数:

(更新:我没有在Xcode 4上尝试过此操作,仅在Xcode 3上尝试过。对于Xcode 4,您可以将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

注意:必须关闭“信息”窗口才能使设置生效。


13
干得好,我将从项目主页链接此:-)
rentzsch 2010年

我发现xmod不尊重我的输出参数。是的,它们在单独的一行上。首先,它无法生成文件,因为它想要的文件夹(以模型命名)不存在,尽管它仍然使该文件夹成为可能。然后,如果我再试一次,它将在它创建的文件夹文件中创建文件,然后将一个具有该名称的组添加到Xcode,我也不希望这样做。
无聊的宇航员,2010年

2
注意:如果您通过自制软件安装了Mogenerator,它将位于/ usr / local / bin中,这不在Xcode的默认PATH中。要使其工作,请添加PATH=${PATH}:/usr/local/bin为脚本的第一行。
乔什在书呆子

2
可能需要添加--template-var arc=true生成的代码与ARC一起使用所需的值
组合时间

1
似乎找不到.xcdatamodel文件的信息页。有关如何操作的任何屏幕截图?
Tony

6

从XCode 4开始,“信息”窗口不再可用,因此不必担心是否无法按照上面的回答进行设置。

使用John Blanco的指南来设置脚本目标,该目标可让您将命令行参数直接传递给mogenerator。请注意,您可能必须稍微调整他的示例中的路径...pwd将脚本中的a扔掉,并针对脚本的工作目录检查路径,如果该脚本没有立即运行。

有关可用命令行参数的列表,请mogenerator --help在终端中运行。AFAICT,所有这些都从脚本编写步骤开始工作。

这个答案,如果你想每次构建自动重建机文件另一种方式来调用mogenerator通过“预动作”。将生成器脚本放入VCS中也有一个很好的技巧。



1

这是--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.

0

另外,也许会有所帮助。用于确定哪些参数可以用于

--template-var KEY=VALUE

打开* .motemplate文件,然后找到“ TemplateVar”之类的字符串。之后,您将看到参数名称,并能够理解其功能。

该参数具有内置模板

--template-var arc=true 
--template-var frc=true
--template-var modules=true
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.