我在应用程序中使用CocoaPods,其中工作空间由主应用程序项目和一些静态库作为子项目组成,每个静态库都有自己的依赖关系。静态库在编译时链接到主项目中,主要作为封装和组织代码的手段存在。使用cocoapods管理静态库中的依赖关系
CocoaPods将依赖项链接到子项目的静态库中时出现问题。如果这两个或多个静态库具有相同的依赖关系,则它们都不能链接到主项目中,因为这样做会导致重复的符号。
我现在有的解决方法是在每个子项目中创建一个“虚拟”目标,并将其设置为pod文件中的链接目标。真正的目标使用由CocoaPods生成的xcconfig文件,没有任何依赖关联链接。
尽管这确实有效,并且id是我能找到的最简单的解决方案,但它仍然带有额外的不必要的负担,针对每个项目,如:
xcodeproj 'MyApp/MyApp.xcodeproj'
target :'MyApp' do
xcodeproj 'MyApp/MyApp.xcodeproj'
pod 'MBProgressHUD', '0.9'
link_with 'PodDummy'
end
另一个缺点这种方法是将所有的依赖仍然需要在主项目无论如何指定,使它们与最终的可执行文件链接。
所以我的问题是:如何使用的CocoaPods静态库中的项目,而不依赖链接到二进制?
或者更好的是:我可以只在静态库子项目中指定依赖项,并让CocoaPods找出需要在主项目中链接哪些内容,解决过程中的重复项?
我在考虑只在pod文件中包含主项目,并让子项目手动引用标题的“Pods”目录。
过去似乎已经围绕这个问题进行了一些讨论,但是我看不出它是什么,如果有的话。相关的讨论是:
- https://github.com/CocoaPods/CocoaPods/issues/1335
- https://github.com/CocoaPods/CocoaPods/issues/840
- iOS Static Library + CocoaPods and the duplicate symbols error
- Kiwi and CocoaPods with a static shared library
谢谢你的回答。我没有开发豆荚,只是试图使用一个项目使用多个子项目链接到一个单一的可执行文件。子项目有其自己的依赖关系 - 其中一些对每个项目都是唯一的,另一些则用于多个子项目。问题是使用cocoapods来管理这些依赖关系,同时也避免了当依赖链接到可执行文件时出现的重复符号。 – 2015-04-21 18:23:17