我正在尝试将Cocoapods生成的静态库链接到我工作区中的多个目标。当我这样做时,我在构建时在链接阶段出现重复的符号错误。这是有意义的,因为我连接图书馆两次。
我如何解决这个问题?我应该仅链接到主目标并包含共享目标中Pod的标头路径吗?我怎么能在Cocoapods做到这一点?我可以手动设置Pod的标题路径,但似乎无法使用pod install
。
以下是我的工作场所设置。它由一个主项目和多个静态库组成,它们是拥有共享代码的xcode项目。我将两个静态库项目的产品链接到主目标,它们自动成为主目标的依赖项。
shared1.xcodeproj -> target shared1
shared2.xcodeproj -> target shared2
main.xcodeproj -> target main
这是我的Podfile:
workspace 'Main.xcworkspace'
xcodeproj 'Main.xcodeproj'
xcodeproj 'Shared1.xcodeproj'
platform :ios
target :ThirdParty, :exclusive => true do
link_with ['main', 'shared1']
pod 'MKNetworkKit'
pod 'SBJSON'
...
end
答案 0 :(得分:4)
您是否尝试在podfile中添加:
link_with 'Target1', 'Target2'
我这样有5个不同的目标,它看起来效果很好。
答案 1 :(得分:1)
我刚刚经历了这种可怕的情况并修复了它 - 我现在有一个工作空间,它将通过命令行或xcode构建,它有4个不同的目标,具有不同的捆绑ID。上面你的方法的问题是你最终会链接疯狂,因为每个目标都会构建pod。我做的是:
我的podfile看起来像这样 - 与开始时的相同:
target 'test-target' do
pod 'HockeySDK'
pod 'RestKit', '~> 0.23.1'
pod 'RKXMLReaderSerialization', :git => 'https://github.com/RestKit/RKXMLReaderSerialization.git', :branch => 'master'
pod 'NSLogger'
pod 'Parse-iOS-SDK'
end
我在构建时确实遇到了一些问题,它一直告诉我它无法链接到我通过更改“图书馆搜索路径”来解决的广告连接。在构建设置中:
$(PROJECT_DIR)/Build/Products/$(CONFIGURATION)-$(PLATFORM_NAME)
与/ Build / Products有点奇怪的路径,但这似乎是Pods开箱即用的东西,如果你反对它就会变得丑陋。
很难写出详细的操作方法,因为我花了5天时间进行实验,以便在Xcode,xcodebuild和Teamcity CI服务器上运行神奇版本。
最后一个问题 - 构建平行转向! (编辑/ schemes / build)...或者您的pod将及时为应用程序构建看到它们
答案 2 :(得分:0)
我遇到过这个。我修复它的方法是删除主项目的依赖项。当主项目与共享项目链接时,它可以自动访问依赖项。
workspace 'Main.xcworkspace'
xcodeproj 'Main.xcodeproj'
xcodeproj 'Shared1.xcodeproj'
platform :ios
target :ThirdParty, :exclusive => true do
link_with ['shared1']
pod 'MKNetworkKit'
pod 'SBJSON'
...
end