【问题标题】:Xcode project templates: How can I specify a static library dependency?Xcode 项目模板:如何指定静态库依赖项?
【发布时间】:2013-12-02 10:52:16
【问题描述】:

我正在尝试创建一个包含两个可编译目标的 Xcode 项目模板,其中一个目标(应用程序)依赖于另一个目标(静态库)。

到目前为止一切正常,除了我无法弄清楚如何在模板中指定实际依赖项,以便它显示在从模板创建的 Xcode 项目的应用程序目标的构建阶段选项卡的目标依赖项部分.

我已将项目的 TemplateInfo.plist 配置如下:

组件部分识别静态库项目模板,并成功将该模板的内容及其目标带入应用程序项目。并且一旦所有内容都编译完成,静态库最终通过 OTHER_LDFLAGS 条目中的第 3 项成功链接。

但尽我所能,模板的 Dependencies 部分不会导致静态库出现在应用程序目标的 Build Phases 选项卡的 Target Dependencies 部分中。我尝试使用数值 0 和 1 指定依赖关系,并尝试使用静态库目标 (cocos2d) 的名称将其作为字符串,但这些都不起作用。

最后,在从这个模板创建的每个 Xcode 项目中,用户必须执行导航到应用程序目标的 Build Phases 选项卡的 Target Dependencies 部分的步骤,然后手动选择和添加静态库目标。虽然这是一项相对简单的任务,但根本没有必要。

谁能告诉我如何配置模板依赖项,这样这个手动步骤就没有必要了?

【问题讨论】:

    标签: ios xcode xcode-template


    【解决方案1】:

    正如您所指出的,Targets 下的 Dependancies 标记引用目标数组索引。在您发布的示例中,您的依赖项位于 Components 下。

    在将模板文件中的目标添加到项目后,组件似乎被添加为目标。如果您引用 Xcode 提供的 Cocoa Touch Application 模板,Cocoa Touch Application Unit Testing Bundle 将作为组件包含在内。

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Application

    查看 Cocoa Touch Application Unit Testing Bundle 的 plist,对目标 0 存在依赖关系。给定组件似乎是在“本地”目标之后添加的,目标 0 是 当添加单元测试目标并针对主要目标创建依赖项时,项目中存在。

    通过在 Cocoa Touch 应用程序中添加对目标 1 的依赖项来反向尝试此操作不起作用。

    我能找到的唯一解决方法是将 Components 移动到 Ancestors 并从每个组件复制 Targets 项在模板的 Targets 部分中。从那里您可以引用目标数组中包含的任何组件的索引。

    您应该注意,即使使用这种技术,目标似乎也已按顺序添加到项目中,并且您似乎只能对已添加的索引设置依赖关系(即索引 0 不能引用索引 2)。

    【讨论】:

      猜你喜欢
      • 2011-12-24
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2011-01-26
      • 1970-01-01
      相关资源
      最近更新 更多