在构建任何使用未内置于核心的任何框架(即某些第三方框架)的 Mac OS X 应用程序时,当我查看框架时,似乎很常见的问题是框架显示为红色在 XCode 4.5 中。
有两个最常见的位置可以显示为红色,一个在项目导航器窗格(左侧)中,一个在构建阶段区域。第三个位置,在 Copy Files 区域,通常显示为红色。这三个都有不同的原因。
以下是所有三个地方都显示为红色时的样子:
我们中间观察者的线索:红色部分后面的一些灰色文本表明 XCode 可能错误地在 XCode.app 包中寻找有问题的框架。另请注意,显示的框架没有任何框架图标,仅显示上图中无效框架的占位符图标。
如果根本找不到框架,那么在我构建时,无法导入框架的头文件,所以我得到一个“词法或预处理器问题”。解决方案通常是修复框架搜索路径。然而,即使这似乎是正确的,我仍然经常得到红色框架。
有时,图标是红色的,但是,框架搜索路径运行良好,编译工作正常(#import <Thingy/Thingy.h>
工作正常,我没有得到任何词法或预处理器问题),但项目不会链接或崩溃时run,因为框架在编译阶段被准确引用,而不是在链接或复制文件阶段。
如果 XCode 无法导入框架内的头文件,下面是一个示例:
这个问题应该是通用的,并且对将来在框架列表中看到“红色”框架的任何人都有用。是的,我已经去供应商那里向供应商寻求有关他们框架的帮助,这应该是第一步。但是,我觉得“XCode 以红色显示框架”令人困惑,它值得一个普遍有用的答案,因此这个问题。另外,我有理由相信,在这种情况下,供应商的安装程序工作得很好,这是我机器上的一个本地问题,其他人将来可能会遇到并且可能希望帮助理解和修复。
扯掉头发后,我发现我可以通过将红色显示的框架复制到其中来解决这个问题,/Applications/Xcode.app/Contents/Developer/Library/Frameworks
但这可能不是正确的方法。这样做似乎是错误的。如果我将位于 /Developer/VendorName 中的框架复制到 xcode 应用程序包的库/框架中,我可以避免编译器找不到框架。
第三方框架当前自动安装到下面的文件夹中,该文件夹/Developer
以制作框架的公司命名。XCode 是否应该自动搜索所有文件夹/Developer
并以某种方式找到这些框架?
目前我在猜测,不,它不能,所以 XCode 可能必须每次都准确地被告知找到这个第三方框架的路径。
我无法找到有关“Xcode 如何查找框架”的 Apple 文档。这里有一个问题就是这么问的,但答案都与 GCC 标头搜索路径有关,而不是 Xcode 如何查找框架和构建该搜索路径。
XCode 4.5 搜索哪些文件夹来定位库?/Developer
即使 XCode 4.5 本身不再存在,是否仍在搜索该文件夹/Developer
?
当要为 Mac OS X 客户端使用安装第三方框架时,应该将其安装到哪里,以及如何检查安装程序是否正常工作?是否有一些命令行调用可以列出 XCode 可见并安装在我的系统上的所有可用框架?
脚注: 第二种工作方式是使用“添加其他”按钮来查找不在已知位置的框架,如果我使用它,那么我经常会遇到一个构建的项目,但在运行时仍然失败,因为复制文件功能没有找到和复制东西,因为使用加号按钮将框架添加到复制阶段似乎在 XCode 中被破坏了。不过有一个解决方法。我最初问的是如何工作,这样您就不需要使用 Add Other,但是,如果 Add Other 是第三方框架的唯一方法,那么,我仍然会遇到 Copy Files 功能无法正常工作的问题。我相信解决这个问题的方法是 XCode 项目自己的框架搜索路径没有为我的系统正确设置,而这就是我需要做的所有事情来解决这个特殊情况。简而言之,我 我想知道全局“框架搜索路径”是什么,它在哪里设置?还是只有 XCode 项目搜索路径,而不是全局框架搜索路径?如果我清理了 Framework 搜索路径,然后使用 Add Other 添加了新的框架,并小心地右键单击并从项目导航器窗格中删除所有 Red 项,如果我只使用鼠标拖放而不使用+ 按钮将框架添加到复制文件中,然后我可以在私有搜索路径位置获取框架来构建和复制。任何尝试使用 Copy Files 区域中的 + 按钮,并通过该对话框添加框架似乎都被某种奇怪的 XCode 错误阻止,在错误的位置添加框架,如第一张图片所示以上,