Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么我的Xcode项目只有在工作区中才能编译?_Ios_Xcode_Xcode Project - Fatal编程技术网

Ios 为什么我的Xcode项目只有在工作区中才能编译?

Ios 为什么我的Xcode项目只有在工作区中才能编译?,ios,xcode,xcode-project,Ios,Xcode,Xcode Project,我有一个Xcode项目P2,它是另一个项目P1所在工作区的一部分 当我构建P1时,它会创建一个Cocoa Touch框架。在P2中,我通过转到添加了P1创建的框架 常规->链接框架和库->选择P1.framework 然后我构建了P2项目,它成功地编译了P1.framework。所以,这一切都很好 现在,我不再打开工作区并从工作区构建P2项目,而是通过单击P2.xcodeproj文件直接打开P2项目。我可以在其中看到p1.framework文件 但是,现在当我尝试构建P2时,它给出了错误: 未找

我有一个Xcode项目P2,它是另一个项目P1所在工作区的一部分

当我构建P1时,它会创建一个Cocoa Touch框架。在P2中,我通过转到添加了P1创建的框架 常规->链接框架和库->选择P1.framework

然后我构建了P2项目,它成功地编译了P1.framework。所以,这一切都很好

现在,我不再打开工作区并从工作区构建P2项目,而是通过单击P2.xcodeproj文件直接打开P2项目。我可以在其中看到p1.framework文件

但是,现在当我尝试构建P2时,它给出了错误:

未找到框架P1。叮当声:错误:链接器命令失败 对于退出代码1,使用-v查看调用

有人能帮我理解为什么从P2.xcodeproj文件直接打开P2时会出错吗?

要使p1.framework能够正确链接,引用p1.framework的项目必须可见

这可能是因为您最初使用标准Xcode UI从工作区中的p1项目中选择p1.framework。Xcode不直接引用p1.framework,而是通过p1项目。这是很有用的,因为它允许您根据自己的喜好修改P1、更改构建目标等,同时还允许其他项目使用P1.framework

一个更简单的类比可能是考虑文件夹别名。就像通过文件夹别名引用文件,然后删除该文件夹。当然,会出现错误