我为我的项目设置了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
已经多次运行
答案 0 :(得分:1)
为了记录,问题已经解决。所以,正如我所说,我使用cocoapods,但我目前的设置是单个podfile,而工作区用于共享一些公共库的3个项目。正如this issue中所解释的那样,cocoapods只会考虑podfile中指定的所有项目中的一个项目,它会转换它正在使用的一个项目(三个中),没有{{1配置,所以它没有感觉需要准备它。因此,当需要使用beta
配置构建项目时,将为beta
配置构建cocoapods,并将特定于release
的文件夹放入其中,因此{{1}项目无法找到它。
修复是为工作空间中存在的所有项目创建release
配置的问题,迫使cocoapods进行相应的准备。然后,Xcode将能够恰当地连接所有内容。