【问题标题】:Adding frameworks to project in Xcode 5 and having *relative* paths added在 Xcode 5 中将框架添加到项目并添加 *relative* 路径
【发布时间】:2013-10-07 04:39:01
【问题描述】:

今天我突然遇到了一个 Xcode (5) 的意外问题。

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

将文件(xxx.framework 等)(或包含该文件的文件夹)拖放到项目管理器中。 在“选择添加文件的选项”中,我仅在需要时检查“将项目复制到目标(如果需要)”(如果文件已经在项目的文件夹中,我不这样做) 在“文件夹”中,我选择为任何添加的文件夹创建组 然后我将它添加到我的应用目标中。

通常,这也会将 relative 路径添加到 Build Settings/Framework Search Paths 和 Library Search Paths 中的框架中。

然而,今天出现的路径是直接(又名绝对)。这打破了东西,因为路径应该是相对的。 Xcode 怎么会突然这样?我怀疑这可能只与这个项目有关(它来自第三部分开发人员),而他们的项目设置可能会导致这种情况。

【问题讨论】:

  • 我现在要做的是手动进入构建设置并将直接路径替换为相对路径。我还看到,如果在路径周围使用引号,以后可能会被破坏,因为 Xcode 有时会在这些引号之前添加反斜杠。发生这种情况时,路径将变得无效,并且构建将失败,因为它找不到那些库/框架。怎么会突然出现这种错误……唉
  • 20140325更新:截至刚才在项目中添加静态库(拖放)时,似乎在Library Search Paths中终于添加了一个relative路径。所以看来这个问题在 Xcode 中已经修复了。

标签: ios xcode


【解决方案1】:

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

【讨论】:

  • 这真的不算太糟糕。如果出现问题,您可以为完整的递归内容创建一个文件夹,而没有该文件夹则创建一个文件夹 - 也许您的部分代码需要同一个库的不同版本。 Xcode 在添加框架/库时仍然会添加绝对路径,为了保持整洁,我仍然必须手动删除它们。
  • @jonny - 没错。问题是 Xcode 在添加库时添加了绝对路径。因此,如果您与某人共享您的代码,他们会得到不必要的错误。为了避免这些,我们添加 ./ ,使其递归
  • 另请注意,如果使用 Cocoapods,则不应删除 $(inherited) 条目。
  • ./ 仅在您单独开发时有效。在 git 存储库环境中,我更喜欢 $(SRCROOT),它可以根据用户进行更改。
  • @Peteee24 是的,你就在那儿!我找到了一个讨论帖here,这有点帮助!
【解决方案2】:

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

转到您的项目

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

将相对路径添加到您的框架。

如果它现在被正确复制,您可以修改路径,如下所示:

./MyProject/Libraries/AcoolLibrary

假设文件结构如下:

-MyProject.xcodeproj

-我的项目

--库

-----Acool库

-------- TheCoolLibrary.framework

【讨论】:

  • 嗯,这就是我突然必须为这个项目手动做的事情。关键是我希望它像往常一样自行添加相对路径。我从来没有真正需要为此烦恼,所以我不确定,但我看起来像这样:$(SRCROOT)/ads/AID。没有引号或任何东西(路径中没有空格),因为我注意到 Xcode5 在一段时间后打破了引号,添加了一些反斜杠,这真的把事情搞砸了。
  • 同样的问题 - 它在路径的每一端添加了六个额外的斜杠。在另一个项目中,我在“Link Binary With Libraries”构建阶段添加了几个框架,并为每个路径添加了一个额外的斜线。让我觉得我快疯了 - 一切正常,突然不工作了!我最终进入 pbxproj 文件本身来更正路径。
猜你喜欢
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
相关资源
最近更新 更多