0

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

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

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

包含静态库依赖项的项目的 TemplateInfo.plist

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

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

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

任何人都可以建议我如何配置模板依赖项,这样就不需要这个手动步骤了吗?

4

1 回答 1

0

正如您所指出的,目标下的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 应用程序 - TemplateInfo.plist

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

Cocoa Touch 应用程序单元测试包 - TemplateInfo.plist

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

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

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

于 2014-05-08T15:51:55.040 回答