我正在编写一个适用于OS X和iOS的可重用代码库。我创建了一个包含2个目标的Xcode项目。一个目标是OS X的框架。另一个是iOS的静态库。
我发现OS X框架目标的构建正在尝试使用iOS标头。我知道这是因为定义了TARGET_OS_IPHONE导致构建尝试查找UIKit.h等。这当然导致构建框架目标失败,因为OS X框架目标没有链接到iOS框架。
我检查了OS X框架目标的构建设置是否有愚蠢但却一无所获。基本SDK设置为“Mac OS X 10.6”。请注意,当我创建Xcode项目时,我使用了Cocoa Framework模板,然后添加了iOS静态库目标。
还有什么可能导致OS X框架目标使用错误的SDK?
谢谢, -KIRBY
答案 0 :(得分:1)
你的问题是Xcode感到困惑。选项单击Overview弹出窗口并将Active SDK重置为Base SDK。您可能会发现Mac目标设置为iOS目标之一,最终会导致您看到各种各样的欢闹
答案 1 :(得分:0)
我遇到了一些愚蠢的问题,将Mac和iPhone目标放在同一个Xcode项目文件中,就像你在问题和随附的评论中所描述的那样。我的解决方案是为Mac和iOS提供单独的Xcode项目文件。您仍然可以在项目之间共享文件,但必须保持每个项目单独更新,但这样可以减少不良行为。
答案 2 :(得分:0)
我正在做一些与你描述的非常相似的事情。我有几个私有框架,在我们的iOS应用程序和我们的OS-X应用程序之间共享。每个这样的框架都驻留在自己的项目中,有两个目标。一个Mac-OS动态框架,以及一个特殊的iOS“静态框架”,使用我们添加到Xcode的特殊模板 - 它是一个开源项目 Karl Stenerud's iOS universal iOS framework 现在我从来没有经历过你描述的愚蠢,我确信这只是你在项目/目标设置中错误删除(或添加)的东西。
我建议作为项目设置的“调试方法”是这样的。
为您打开一个漂亮的文本编辑器。 例如,转到iOS静态库的构建设置。选择“全部”和“组合”按钮。现在选择所有行和Copy(command-C)。转到文本编辑器,然后粘贴。您将对所有设置都有一个很好的文字说明。
现在在Xcode中创建一个新的模板项目,并在另一个文本文件中执行相同的操作。现在比较这些文件,看是否存在差异。
在所有3个级别上执行此操作。 1.项目级别设置 2. iOS静态lib设置 3. OS-C框架。