在 Xcode 上包含来自添加框架的标头
Posted
技术标签:
【中文标题】在 Xcode 上包含来自添加框架的标头【英文标题】:Include Headers from added frameworks on Xcode 【发布时间】:2013-03-10 07:19:01 【问题描述】:我想使用glew
和cg
等一些框架,所以我手动添加了
通过右键单击项目来为我的项目添加所需的框架 -> 将文件添加到...
并选择正确的框架。问题是,当我尝试包含头文件时,
Xcode 找不到它们中的任何一个。希望这张图能帮助理解:
还有:
给出的错误是针对glew
框架的,但它也发生在Cg
上。
如您在左侧所见,已添加所需的框架。
知道如何包含这些标题吗?
尝试手动添加头文件后,出现架构错误:
我不知道这是否应该是这样的。 谢谢!
【问题讨论】:
我遇到了同样的问题并通过设置我必须将Build Settings -> Framework Search Paths
设置为$(SRCROOT)
来修复它(假设您的框架位于项目目录的根目录中)。
对于未来的搜索,另一个潜在的原因是您的项目中有一个重复的框架。
【参考方案1】:
在开始之前,删除框架和您在尝试使其工作时添加的所有文件。
然后,您必须在目标的Build Phases
中添加框架。然后进入Link Binary With Libraries
并从那里选择你的框架。
应该这样做。在每个 #import directive.
之后,您的标题应该可以自动完成
如果它不起作用(有时会发生),我可以为您提供其他步骤。
其他步骤:
在构建设置中转到您的项目设置:
用你的框架路径完成Framework Search Paths
对User Header Search Path
做同样的事情
然后,它应该可以工作。如果没有,您需要在 #import
指令中添加标题的完整路径。示例:
#import "/path/to/my/header.h"
Apple 的文档available here states:
-
在项目导航器中,选择
你的项目
选择您的目标
选择“构建阶段”选项卡
打开“将二进制文件与库链接”
扩展器
点击“+”按钮
选择您的框架
(可选)拖放添加的
框架到“框架”组
【讨论】:
@Itzik984 我已经添加了额外的步骤。您的框架是否位于/Library/Frameworks
?
他们在/System/Library/Frameworks
下可以吗?还是应该把它们移到那里?
@Itzik984 我想没关系。但是你可能需要告诉 Xcode 哪个文件夹是框架,哪个文件夹是头文件。我最近有一个类似的问题。 Xcode 不会像以前那样使用 /Library/Frameworks 中的链接框架进行编译。实际上,它找不到标题。在 #import 指令中添加完整路径解决了它。后来,我将该文件夹添加到 User Header Search Paths,这样我就不需要使用完整路径了。
我刚刚遇到了同样的问题,可以在将搜索路径设置为 $(SRCROOT) 和非递归时解决它!!!使用递归自动完成无法找到它,但是当设置为非递归自动完成时,找到子文件夹,然后找到头文件。【参考方案2】:
在我的例子中,我为 Target 添加了 Framework Search Paths
,但它应该添加到 Project
Always Search Users Path
也应该是 yes
【讨论】:
目前已弃用【参考方案3】:对于那些在添加框架后自动完成失败的人。
我曾经通过转到Build Phases
并选择Link Binary with Libraries
选项来添加框架。现在在 XCode 6.1 中,虽然项目构建良好,但 XCode 中的自动完成功能不起作用。
那么需要做的是:
-
从
Project Navigator
和Link Binary with Libraries
中删除已添加的框架。
只需通过 XCode 中的 File
-> Add Files to
选项将框架添加到项目中。
自动完成将开始工作。
【讨论】:
我正在尝试包含我自己构建的框架。出于某种原因,将其添加到构建阶段链接二进制文件与库部分的项目中不起作用,但只需通过将文件添加到项目中添加框架即可。这次真是万分感谢。 (已投票) 谢谢!这是唯一的解决方案......只是想知道为什么做那些显而易见的事情总是那么难......【参考方案4】:就我而言,外部框架已随 Windows 一起下载并添加到项目中。然后它被转移到 OSX,在那里构建了 Xcode 项目并且外部框架没有正确加载。我猜这是因为 Windows 将框架文件夹更改为常规文件夹,然后 OSX 遇到了麻烦。
我的解决方案是简单地用 OSX 下载框架并将其拖到 XCode 项目的框架文件夹中。
【讨论】:
【参考方案5】:在我的情况下,我必须更新框架版本,所以我只是替换了文件系统中的 .framework,然后我得到了你在问题中提到的错误。
删除框架并重新添加它,使用搜索路径和所有其他建议都没有帮助。
最终,清理构建文件夹成功了:
从 xcode 菜单中选择“Product”,按住选项键并点击:“Clean Build Folder”。
之后,我成功构建并运行了该项目。
【讨论】:
以上是关于在 Xcode 上包含来自添加框架的标头的主要内容,如果未能解决你的问题,请参考以下文章