【发布时间】:2014-03-05 19:46:11
【问题描述】:
我有一个工作区,其中包含一个项目 (MyProject) 和三个目标(MyProject、MyProjectTests 和 MyProjectPlugin)。我为它设置了一个包含三个依赖项的 Podfile。前两个应该链接到所有三个目标,但第三个(OCMock)应该只链接到我的测试目标。这是我的 Podfile:
platform :osx, '10.8'
pod 'objective-zip', :podspec => 'Podspecs/objective-zip.podspec'
link_with 'MyProject', 'MyProjectPlugin', 'MyProjectTests'
pod 'Unrar4iOS', :path => '../Unrar4iOS'
link_with 'MyProject', 'MyProjectPlugin', 'MyProjectTests'
target : MyProjectTests do
pod 'OCMock', '~> 2.2.3'
end
我希望libPods.a 只包含objective-zip 和Unrar4iOS,而libPods-MyProjectTests.a 是一个超集,包含这两个和OCMock。事实上,情况就是这样,我通过查看 Pods.xcodeproj 中设置的目标来验证这一点。因此,将这些框架链接到我的项目的正确方法是主要插件项目使用libPods.a,测试项目使用libPods-MyProjectTests.a。当我以这种方式配置项目时,一切都编译并运行良好。
这就是问题所在。每当我 pod update 使用新的依赖项时,libPods.a 就会链接到 libPods-MyProjectTests.a 之上的 MyProjectTests,这会导致编译器错误(ld 报告重复符号,正如预期的那样)。
这是 CocoaPods 的错误,还是我需要更新我的 Podfile。这在本地开发时很麻烦,但是当我配置一个每次都会pod install 的自动构建时,这将是一个主要问题(因为我不打算也不打算提交 Pods 目录)。
【问题讨论】:
标签: objective-c xcode shared-libraries cocoapods