gpt4 book ai didi

xcode - 在 XCode 4.5 中我的项目中显示为红色的框架故障排除

转载 作者:行者123 更新时间:2023-12-04 05:14:31 25 4
gpt4 key购买 nike

在构建任何使用未内置到核心中的任何框架(即某些第三方框架)的 Mac OS X 应用程序时,当我查看框架时,出现红色框架的问题似乎相当普遍在 XCode 4.5 中。

它可以在两个最常见的位置显示为红色,一个在项目导航器 Pane (左侧)中,另一个在构建阶段区域中。第三个位置,在复制文件区域,通常以红色显示。这三者都有不同的原因。

当所有三个地方都显示为红色时,它的样子如下:

enter image description here

给我们观察者的线索:红色部分后的一些灰色文本表明 XCode 可能错误地在 XCode.app 包中寻找有问题的框架。另请注意,显示的框架没有任何框架图标,上图中的无效框架仅显示一个占位符图标。

如果根本找不到框架,那么当我构建时,无法导入框架的头文件,因此会出现“词法或预处理器问题”。解决方法通常是修复框架搜索路径。然而,即使这似乎是正确的,我仍然经常得到红色框架。

有时,图标是红色的,但是,框架搜索路径工作得很好,编译工作正常(#import <Thingy/Thingy.h> 工作正常,我没有得到任何词法或预处理器问题),但项目不会链接或 运行时崩溃 ,因为框架在编译阶段被准确引用,而不是在链接或复制文件阶段。

下面是一个示例,说明如果 XCode 无法导入框架内的头文件,它会是什么样子:

enter image description here

这个问题应该是一般 ,并且对将来在框架列表中看到“红色”框架的任何人都有用。是的,我已经去供应商那里向供应商寻求关于他们框架的帮助,这应该是第一步。但是,我觉得“XCode 以红色显示框架”已经足够令人困惑了,因此它值得一个通用的有用答案,因此是这个问题。此外,我有理由相信,在这种情况下,供应商的安装程序工作得很好,这是我机器上的本地问题,其他人将来可能会遇到并且可能需要帮助理解和修复。

撕掉头发后,我发现我可以通过将显示为红色的框架复制到/Applications/Xcode.app/Contents/Developer/Library/Frameworks 中以非常糟糕的方式解决此问题。但这可能不是正确的方法。这样做似乎是错误的。如果我将位于/Developer/VendorName 中的框架复制到 xcode 应用程序包的库/框架中,我可以避免编译器找不到框架。

第三方框架目前会自动安装到 /Developer 下的文件夹中。以制作框架的公司命名。 XCode 是否应该自动搜索 /Developer 下的所有文件夹?并以某种方式定位这些框架?
目前我猜,那 不,它不能,所以 XCode 可能必须每次都准确地告诉 XCode 找到这个第三方框架的路径 .

我无法找到有关“Xcode 如何找到框架”的 Apple 文档。有问题here这只是问这个问题,但答案都涉及 GCC header 搜索路径,而不是 Xcode 如何找到框架并构建该搜索路径。

XCode 4.5 搜索哪些文件夹来定位库?是/Developer即使 XCode 4.5 本身不再在 /Developer 中,文件夹仍在搜索中?

当要为 Mac OS X 客户端使用安装第三方框架时,应将其安装到何处,以及如何检查安装程序是否有效?是否有一些命令行调用可以列出 XCode 可见并安装在我的系统上的所有可用框架?

脚注:
第二种工作方式是使用“添加其他”按钮来查找不在已知位置的框架,如果我使用它,那么我经常会陷入一个已构建但在运行时仍然失败的项目中,因为复制文件功能不会查找和复制内容,因为使用加号按钮向复制阶段添加框架在 XCode 中似乎已损坏。不过有一个解决方法。我最初询问如何工作,以便您不需要使用添加其他,但是,如果添加其他是第三方框架的唯一途径,那么,我仍然遇到无法使用复制文件功能的问题。我相信解决这个问题的方法是 XCode 项目自己的框架搜索路径没有为我的系统正确设置,这就是我需要做的来修复这个特殊情况。简而言之,我想知道全局“框架搜索路径”是什么,它在哪里设置?还是只有 XCode 项目搜索路径,而不是全局框架搜索路径?如果我清理了Framework的搜索路径,然后使用Add Other添加新的framework,并小心的右键单击并从项目导航器 Pane 中删除所有红色项,如果我只使用鼠标拖放而不使用+ 按钮将框架添加到复制文件,然后我可以在私有(private)搜索路径位置获取一个框架来构建和复制。任何尝试使用 Copy Files 区域中的 + 按钮以及通过该对话框添加框架的尝试似乎都被某种奇怪的 XCode 错误阻止工作,因为它在错误的位置添加了框架,如第一张图片所示上面,它错误地记住或缓存了第三方框架应该位于 XCode.app 包内的 Developer/Library/Frameworks 文件夹中。

最佳答案

是的,这是个好问题。我一直想来就一个相关问题发表一篇文章:为包含编译的 momd 文件的静态库项目创建一个包,我只能通过使用包将库项目嵌套在项目下才能开始工作。也就是说,嵌套在 Xcode 中,在文件系统级别,它仍然显示为对等项。这与项目如何找到其他项目的产品有关。

同时,在您的具体问题上,我多年来在我完成的每个项目中都使用了 OCHamcrest,但除非我在项目中实际安装了框架文件,否则我一直无法让它可靠地工作。理想情况下,我希望将 OCHamcrest 安装在/Library/Developer/Frameworks 等位置之一,但尝试使这项工作非常痛苦,简直太疯狂了。

我已阅读有关 Xcode 在哪里查找框架的文档,它位于/Developer/Library/Frameworks 和/Library/Frameworks 中。如果你往里面看,你只会看到苹果的东西。另外,请记住/Developer 曾经是一个单独的目录,直到 Xcode 4,所以它看起来并不那么愚蠢。现在,如果您决定使用测试版,您将被搞砸。我很确定当 Xcode 4.5 更新自身时,虽然在应用程序中,它会复制框架。

我希望有人有更好的想法!

关于xcode - 在 XCode 4.5 中我的项目中显示为红色的框架故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14463101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com