Podfile中link_with的真正含义是什么?

For*_*lax 2 xcode ios cocoapods

我的问题是,我不知道link_with 在我的Podfile中使用后发生了什么,所以我不知道何时何地使用它.我已经阅读了指南,但描述是为了简要了解其含义link_with.

在我的测试之后,我知道如果我在我的Podfile中使用link_with没有target默认的Pods库libPods.a将链接到.But引用的目标,link_with如果targetPodfile中的内容link_with看起来不再使用了.

除此之外,官方指南中没有提到在哪里写link_with,所以当我link_with 'Dummy'target街区看到时我很困惑.

任何人都可以解释何时何地link_with使用link_with 'Dummy'?(我只知道它用于解决库中的重复符号)?

mgy*_*yky 7

正如文档所说,与一个目标项目一起使用没有意义:

如果未指定显式目标,则Pods目标将与项目中的第一个目标链接.因此,如果您只有一个目标,则无需指定要链接的目标.

例如,我有多目标应用程序,这里是我的Podfile的前几行:

platform :ios, '9.3'

workspace 'MyApplication'
link_with 'target1', 'target2', 'target3', 'target4'

pod 'AFNetworking', '~> 2.5.4'
pod 'Reachability'
pod 'SDWebImage', '~> 3.7.2'
pod 'CocoaLumberjack'
Run Code Online (Sandbox Code Playgroud)

等等

这里使用有意义,因为如果你不使用"target2,target3和target4"会在你构建时出错.这就是为什么我们使用它.

或者,您可以为每个目标指定pod,并为常见的pod添加共享pod,如下所示:

platform :ios, '9.3'

workspace 'MyApplication'

def shared_pods
    pod 'AFNetworking', '~> 2.5.4'
    pod 'SDWebImage', '~> 3.7.2'
    pod 'CocoaLumberjack', '~> 2.0.0'
end

target :target1, :exclusive => true do
  shared_pods
end 

target :target2, :exclusive => true do
  shared_pods
  pod 'Mantle'
end

target :target3, :exclusive => true do
  shared_pods
  pod 'MBProgressHUD', '~> 0.9.1'
end 

target :target4, :exclusive => true do
  shared_pods
end 
Run Code Online (Sandbox Code Playgroud)

现在一切都很清楚@Yujie Ren?

另外,请在此处查看:exclusive => true do含义.