在Xcode 5中向项目添加框架并添加*相对路径*

30

今天突然出现了一个意外的问题,涉及Xcode(5)。

以下是我通常添加外部框架的方式:

将文件 (xxx.framework等) (或包含文件的文件夹)拖放到项目管理器中。 在“选择添加文件的选项”中,仅在需要时勾选“将项目复制到目标位置”(如果文件已经在项目文件夹中,则不需要勾选此项) 在 “文件夹” 中,我选择为任何添加的文件夹创建组 并将其添加到我的应用程序目标中。

通常这也会在 Build Settings/Framework Search Paths 和 Library Search Paths 中添加相对路径。

然而,今天出现的路径是直接的(即绝对路径),这会导致后面的问题,因为路径应该是相对的。为什么Xcode突然这样做呢?我怀疑这可能只发生在这个项目上(它来自第三方开发者),与他们的项目设置有关。


1
我现在需要手动进入构建设置,并使用相对路径替换直接路径。我还发现,如果在路径周围使用引号,那么后来可能会出现问题,因为Xcode有时会在这些引号之前添加反斜杠。当发生这种情况时,路径将变为无效,并且构建将失败,因为找不到这些库/框架。为什么这些错误突然出现呢......唉 - Jonny
20140325 更新:刚刚在将静态库(拖放)添加到项目时,似乎相对路径最终被添加到库搜索路径中。因此,看来这个问题在Xcode中已经解决了。 - Jonny
2个回答

49

我遇到了同样的问题。有一个简单的解决方法。转到框架搜索路径。从那里删除所有内容。添加 . / 并使其递归。就这样。


这其实还不错。如果出现问题,您可以为完整递归内容创建一个文件夹,另外再创建一个没有该文件夹的版本 - 或许您的代码的某些部分需要同一库的不同版本。但是,当添加框架/库时,Xcode会添加绝对路径,为了保持清洁,我仍然必须手动删除它们。 - Jonny
1
@jonny - 没错。问题在于Xcode在添加库时会添加绝对路径。因此,如果您与他人共享代码,则会出现不必要的错误。为了避免这些错误,我们添加./,使其递归。 - Gautam Jain
2
还要注意,如果使用Cocoapods,则不应删除$(inherited)条目。 - LazarusX
13
仅适用于单独开发。在 Git 仓库环境中,我更喜欢使用 $(SRCROOT),这可以根据用户而变化。 - Peteee24
@Peteee24 嗯,你说得对!我在这里找到了一个讨论串(http://www.politepix.com/forums/topic/project-can-find-the-openears-framework-headers-but-not-slt/#post-1018634),有点帮助! - Ajith Renjala

2

我在XCode 5上遇到了同样的问题,目前最好的解决方法是修改框架搜索路径。

进入你的项目

构建设置->框架搜索路径

添加相对路径到你的框架。

如果复制正确,现在你可以修改路径,比如这样:

./MyProject/Libraries/ACoolLibrary

假设文件结构像这样:

-MyProject.xcodeproj

-MyProject

--Libraries

-----ACoolLibrary

-------- TheCoolLibrary.framework


2
这就是我突然为这个项目手动添加的内容。关键是我希望它像以前一样自动添加相对路径。我从来没有真正关心过这个,所以我不确定,但我让它看起来像这样:$(SRCROOT)/ads/AID。没有引号或任何东西(路径中没有空格),因为我注意到Xcode5会在一段时间后破坏引号,添加一些反斜杠,这会更加混乱。 - Jonny
1
这里也有同样的问题 - 它在路径的每一端都添加了六个额外的斜杠。在另一个项目中,我在“链接二进制文件库”构建阶段中添加了几个框架,并在每个路径中添加了一个额外的斜杠。让我觉得自己快疯了 - 一切正常,突然就不行了!最终我只能进入pbxproj文件本身来纠正路径。 - GTAE86

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接