Xcode构建在错误文件夹中的静态库

时间:2013-08-04 14:48:58

标签: xcode cocoapods

我为我的项目设置了cocoapods,我已经进行了很长一段时间的开发而没有任何问题。最近我添加了一个名为“Beta”的新配置,复制了“Release”配置。与此同时,我添加了一个使用此配置构建目标的Scheme。

这个新方案可以毫无问题地构建所有内容,但链接会因(看似已知的)消息而失败:

  

ld: library not found for -lPods

我知道在网络上广泛讨论了导致出现此错误消息的问题,原因和条件各不相同:

这些修补程序似乎都不适用于此处。通过查看工作区文件夹,我可以看到,Cocoapods构建的产品放在Build/Products/Release-iphonesimulator而不是Build/Products/Beta-iphonesimulator,即使应用程序本身正确地构建在后者中。将所有*.a文件移动到Build/Products/Beta-iphonesimulator使得在模拟器中运行正常,但下一个版本仍然放在错误的位置。

修改

经过一些进一步调查后,环境变量$BUILT_PRODUCTS_DIR在应用程序本身的构建阶段正确设置,但在构建cocoapods产品时却没有。

导致此问题的原因以及如何解决此问题?

排除问题

  • pod install已经多次运行
  • 我在工作区工作,而不是在项目中工作
  • 新配置中的cocoapods配置文件已正确设置

enter image description here

  • 在偏好设置中构建位置似乎很好

enter image description here

1 个答案:

答案 0 :(得分:1)

为了记录,问题已经解决。所以,正如我所说,我使用cocoapods,但我目前的设置是单个podfile,而工作区用于共享一些公共库的3个项目。正如this issue中所解释的那样,cocoapods只会考虑podfile中指定的所有项目中的一个项目,它会转换它正在使用的一个项目(三个中),没有{{1配置,所以它没有感觉需要准备它。因此,当需要使用beta配置构建项目时,将为beta配置构建cocoapods,并将特定于release的文件夹放入其中,因此{{1}项目无法找到它。

修复是为工作空间中存在的所有项目创建release配置的问题,迫使cocoapods进行相应的准备。然后,Xcode将能够恰当地连接所有内容。