Cocoapod:ios app和osx测试依赖项

时间:2015-11-24 06:38:39

标签: ios xcode macos cocoapods

我有iOS应用程序,我想在osx测试中测试一些代码(与iOS不相关的服务器的交互)。我有应用程序'项目和应用程序' ios目标和' AppTests' macosx目标。

我的Podfile

platform :ios, '8.0'

# ios app
target 'App' do

    ... (some ios dependencies)

    pod 'PocketSocket'
    pod 'ProtocolBuffers'

end

# osx tests
target 'AppTests' do

    pod 'PocketSocket'
    pod 'ProtocolBuffers'

end

这是对的吗?我可以为iOS构建应用程序,但我收到测试错误。 ProtocolBuffersPocketSocket定位到ios而不是osx

"_OBJC_CLASS_$_ObjectivecDescriptorRoot", referenced from:
..
ld: symbol(s) not found for architecture x86_64

我可以在' Pods'目标ProtocolBuffers目标Base SDK为Latest iOSPocketSocket目标相同。 Pods-AppTests目标依赖于PocketSocketProtocolBuffers目标,因此它会尝试使用为ios编译的目标文件进行osx测试。

更新1:

我为测试目标添加了platform,cocoapod按预期为osx和osx创建了单独的目标:

# tests
target 'ArduinoCodeTests' do
    platform :osx, '10.10'

    pod 'PocketSocket'
    pod 'ProtocolBuffers'

end

但是我仍然有链接器错误:

>   "_OBJC_CLASS_$_ObjectivecDescriptorRoot", referenced from:

1 个答案:

答案 0 :(得分:1)

似乎是CocoaPod的错误。

它创建了目标Pods-AppTests,它取决于Pods-AppTests-ProtocolBuffersPods-AppTests-PocketSocket作为目标依赖项。然后AppTests目标取决于此目标:“链接二进制文件库”具有libPods-AppTests.a

我必须手动添加libPods-AppTests-ProtocolBuffers.alibPods-AppTests-PockeSocket.a,因为他们的对象文件路径在构建时未添加到“-L”。