【问题标题】:Properly embedding custom frameworks into a project in Xcode 5将自定义框架正确嵌入到 Xcode 5 中的项目中
【发布时间】:2014-06-03 04:42:31
【问题描述】:

Xcode 5 在这里变得非常令人沮丧。我想要实现的只是将一些自定义 Cocoa 框架嵌入到我的项目中并创建两个版本的应用程序,一个用于 Mac App Store,一个用于自定义在线商店(这样在为 MAS 构建时会有一个名为 Debug (MAS) 的文件夹,因此我可以将其与其他版本区分开来)。

我在项目中嵌入了三个框架(只有天知道为什么只有一个项目可以同时嵌入另一个,这个限制见鬼去吧)并将他们的产品添加到“链接二进制与库”和“复制框架”中构建阶段。成品在库中的默认位置。

现在是这样 - 每次我使用除“Debug”和“Release”之外的自定义构建配置文件时,框架都不会复制到自定义构建文件夹,而只是进入“Debug”和“Release”无论主应用程序的任何构建选项如何。此外,框架始终使用“调试”构建,不再连接到当前构建模式(测试、存档等)。长话短说,这是一个巨大的文件路径混乱,显然还有很多关于自定义框架和自定义构建配置的错误。

现在我的问题是 - 必须有一种官方或可行的方式来维护一个 Xcode 项目,该项目既分布在 MAS 上,又分布在一个自定义在线商店(两个版本)上,并且至少嵌入了一个自定义框架。所有其他开发人员是如何解决这个问题的,我觉得我在做一些根本错误的事情,如果我这样做了,很抱歉将责任归咎于 Xcode,但可以肯定的是:Xcode 使用外部组件的路径管理是一个混乱和导致无限的邮件列表和论坛帖子...

【问题讨论】:

    标签: objective-c xcode macos


    【解决方案1】:

    答案是为 MAS 和非 MAS 应用创建单独的目标。您可以添加其他目标来构建自定义框架并使不同的目标相互依赖(根据需要)。一旦这一切设置(正确),那么构建任何目标将构建任何依赖目标(具有相同的构建标志)。而且 AFAIK 没有什么可以阻止 Xcode 项目包含多个子项目,所以我不知道您为什么认为是这种情况。

    【讨论】:

    • 一旦一个项目被嵌入到另外两个 Xcode 项目中并且一个试图同时打开这两个项目时,会弹出一条消息“无法打开 XYZ.xcodeproject,因为它已经在另一个工作区中打开”,这就是我正在谈论的消息。关于框架并使用相同的标志进行构建 - 问题是:如果我将 Xcode 配置文件分配给我的项目,命名为“Release”或“Debug”以外的任何名称(例如 MAS-Release.xcconfig),所有嵌入式框架都不会在内部构建MAS-Release,相反,它们总是会进入默认的 Debug 或 Release 文件夹。
    • 一旦他们这样做了,Xcode 在我的前缀文件中使用 #import <...> 导入框架时给我留下一个错误,说“文字或预处理器问题”,抱怨它找不到框架。
    • 这是一个不同的问题;您必须设置“用户标题搜索路径”以包含您的框架标题文件夹。 (并且您应该使用#import ".../..."; 或@import 框架(如果您打开了模块)。)而且我不会将它作为项目嵌入......我会将其作为目标并相应地设置依赖项。
    • 感谢您的回复。所以你的意思是,即使 Apple 在他们的文档中推荐了项目嵌入功能,也不应该使用它?
    • 说真的!我厌倦了花费无数小时阅读“官方”Apple 文档,却发现他们建议的方式是错误的。我的意思是……什……怎么?!我正处于@Toby 所在的位置。我认为。有这么多“指令”和路径变量,我什至不知道自己在做什么。顺便说一句,文档中没有一次提到“用户标题搜索路径”。与 Xcode 5 中的“标题搜索路径”或“框架搜索路径”有何不同?我做了一个框架。我会假设我需要告诉 Xcode 我的框架路径,但这是不对的?
    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    相关资源
    最近更新 更多