Xcode项目模板:如何指定静态库依赖项?

时间:2013-11-19 02:48:26

标签: ios xcode xcode-template

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

到目前为止一切都有效,除了我无法弄清楚如何在模板中指定实际的依赖关系,以便它显示在从模板创建的Xcode项目的应用目标的Build Phases选项卡的Target Dependencies部分中

我已经按如下方式配置了项目的TemplateInfo.plist:

TemplateInfo.plist of project containing static lib dependency

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

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

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

有人可以告诉我如何配置模板依赖关系,这样就不需要这个手动步骤吗?

1 个答案:

答案 0 :(得分:0)

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

在将模板文件中的目标添加到项目后,组件似乎会添加为目标。如果您引用随Xcode提供的 Cocoa Touch应用程序模板, Cocoa Touch应用程序单元测试包将作为组件包含在内。

  

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

Cocoa Touch Application - TemplateInfo.plist

查看 Cocoa Touch应用程序单元测试包的plist,存在对目标0的依赖性。给定的组件似乎是在“本地”目标之后添加的,目标0是 在添加单元测试目标并且针对主目标创建依赖关系时,在项目中出现。

Cocoa Touch Application Unit Testing Bundle - TemplateInfo.plist

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

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

你应该注意到,即使使用这种技术,目标似乎按顺序添加到项目中,你似乎只能设置已经添加的索引的依赖性(即索引0不能引用索引2)。 / p>