我如何让Square的代码生成器工作?

时间:2014-03-31 21:12:00

标签: xcode5 code-generation

Square code generator utilities(objc-assetgen,objc-colordump,objc-identifierconstants)看起来很棒。

但是,其文档未提及如何将其合并到项目中。

在项目中包含这些实用程序的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

在示例项目之后,领导似乎是一个好主意。

  1. 在finder中,在项目目录结构的某处创建一个名为objc-codegenutils的新文件夹。
  2. 将以下文件/目录从official project复制到该文件夹​​中:
    • assetgen
    • codegenutils.xcodeproj
    • colordump
    • identifierconstants
    • 共享
  3. 将codegenutils.xcodeproj从finder中的新位置拖到Xcode项目导航器中。
  4. 使用位于此帖子底部的代码为目标添加新的运行脚本构建阶段。
  5. 将“运行脚本”拖动到“编译源”步骤上方。
  6. (可选)将此步骤从“运行脚本”重命名为objc-codegentools。
  7. 在Target Dependencies构建阶段,点击加号按钮并选择三个codegenutils。)
  8. 在项目的根文件夹(即下面引用的文件夹)中创建Derived Sources文件夹。如果在构建项目时该文件夹不存在,它将在根文件夹中创建所有文件。
  9. 构建项目,以便自动生成源代码文件。
  10. 将Derived Sources文件夹从finder拖到项目导航器。
  11. 您现在可以#import任何生成的文件并开始使用它们(例如#import "MYMediaCatalog.h"UIImage *image = [MYMediaCatalog myTestImage];
  12. 或者,#导入.pch文件中生成的文件,这样您就不需要手动#import每个文件。
  13. 设置这种方式的好处是,当项目更新时,你可以简单地用更新的代码替换objc-codegenutils中的所有内容,它应该可以工作。

    运行脚本代码:

    DERIVED_SOURCES="$SRCROOT/Derived Sources"
    TOOL_PATH=$BUILD_ROOT/$CONFIGURATION
    $TOOL_PATH/objc-assetgen -f "$SRCROOT" -o "$DERIVED_SOURCES" -p MYP
    $TOOL_PATH/objc-colordump -f "$SRCROOT" -o "$DERIVED_SOURCES" -p MYP
    $TOOL_PATH/objc-identifierconstants -f "$SRCROOT" -o "$DERIVED_SOURCES" -p MYP
    

    注意:将MYP替换为您自己的3 letter identifier

    如果您对文件的生成方式进行了任何更改(例如,如果您创建了新的故事板),则可以使用以下步骤重新创建派生源:

    1. 在Xcode中,删除Derived Sources组,选择将文件发送到回收站。 (警告:如果此文件夹中除了自动生成的文件之外还有其他任何文件,请注意只选择正确的文件。)
    2. 在finder中重新创建派生源。
    3. 构建项目。
    4. 将Finder中的Derived Sources文件夹拖回Xcode中的项目导航器。
    5. 注意:如果您在构建时遇到问题,请确保codegenutils.xcodeproj未打开(有时您必须重新启动Xcode才能意识到它已关闭),并且您的目标设置为iOS而不是你的mac。