【发布时间】:2014-11-26 09:43:18
【问题描述】:
我在一个应用程序上使用 CocoaPods,其中工作区由一个主应用程序项目和一些作为子项目的静态库组成,每个子项目都有自己的依赖项。静态库在编译时链接到主项目,主要作为封装和组织代码的一种方式存在。
CocoaPods 将依赖项链接到子项目的静态库时出现问题。如果这些静态库中的两个或多个具有相同的依赖项,则它们不能都链接到主项目中,因为这样做会导致重复的符号。
我目前的解决方法是在每个子项目中创建一个“虚拟”目标,并将其设置为 pod 文件中的链接目标。真正的 target 使用的是 CocoaPods 生成的 xcconfig 文件,没有链接任何依赖。
虽然这确实有效,并且是我能找到的最简单的解决方案,但它仍然带来了在每个项目中都有一个虚拟目标的额外不必要的负担,例如:
xcodeproj 'MyApp/MyApp.xcodeproj'
target :'MyApp' do
xcodeproj 'MyApp/MyApp.xcodeproj'
pod 'MBProgressHUD', '0.9'
link_with 'PodDummy'
end
这种方法的另一个缺点是所有依赖项仍然需要在主项目中指定,以便它们与最终的可执行文件链接。
所以我的问题是:如何在静态库项目中使用 CocoaPods,而不将依赖项链接到二进制文件中?
或者更好:我可以仅在静态库子项目中指定依赖项,并让 CocoaPods 找出需要在主项目中链接的内容,解决过程中的重复项吗?
我正在考虑只在 pod 文件中包含主项目,并让子项目手动引用“Pods”目录的标题。
过去似乎围绕这个问题进行了一些讨论,但我看不出它的结果是什么,如果有的话。相关讨论有:
【问题讨论】:
标签: xcode cocoapods dependency-management static-linking