Mogenerator参数如何工作,我可以通过Xcode发送?

时间:2010-08-28 02:49:57

标签: documentation mogenerator

Mogenerator的帮助很小。所有参数都做了什么?

4 个答案:

答案 0 :(得分:144)

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

  • --base-class:“私有类”(例如_MyObject.h)将继承的基类的名称。这也会以#import "MyManagedObject.h"的形式向同一个.h文件添加导入。提示:如果要继承的类位于库中,则默认的import语句将不起作用。作为一种变通方法,您可以为您创建的每个项目提供额外的继承级别,并让该类从库继承(例如,将基类设置为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:无法在Xcode中设置.xcdatamodel文件的路径。
  • --list-source-files
  • --orphaned
  • --versioned
  • --help

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

(更新:我没有在Xcode 4上试过这个,只有Xcode 3.对于Xcode 4,你可以add mogenerator as a build phase而不是按照以下步骤。)

  1. 转到.xcdatamodel文件的信息页。
  2. 选择“评论”标签。
  3. xmod添加到评论字段中,单独行。
  4. 每次保存模型时,它都会为您重新生成机器文件。
  5. 要发送参数,它们必须位于各自的行上:

    这有效:

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

    即便如此:

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

    但是,这不起作用:

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

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

答案 1 :(得分:6)

从XCode 4开始,“信息”窗口不再可用,因此如果您无法按照上面的说明进行设置,请不要担心。

使用John Blanco's guide设置脚本目标,该目标允许您将命令行参数直接传递给mogenerator。请注意,您可能需要稍微调整其示例中的路径...在脚本中抛出pwd并检查脚本工作目录中的路径(如果它不会立即为您运行)。

有关可用命令行参数的列表,请在终端中运行mogenerator --help。 AFAICT,所有这些都来自脚本步骤。

如果要在每次构建时自动重建机器文件,请参阅this answer以了解通过“预执行”调用mogenerator的其他方法。将mogenerator脚本放入VCS也有一个很好的建议。

答案 2 :(得分: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.

答案 3 :(得分:0)

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

--template-var KEY=VALUE

打开* .motemplate文件,找到类似“TemplateVar”的字符串。在点之后,您将看到参数名称,并能够理解它的作用。

此params具有内置模板

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