什么继承! :search_paths呢?

时间:2016-05-05 20:53:31

标签: ios xcode cocoapods

查看CocoaPods自己的例子(来自https://guides.cocoapods.org/syntax/podfile.html#abstract_target

# Note: There are no targets called "Shows" in any of this workspace's Xcode projects
abstract_target 'Shows' do
  pod 'ShowsKit'

  # The target ShowsiOS has its own copy of ShowsKit (inherited) + ShowWebAuth (added here)
  target 'ShowsiOS' do
    pod 'ShowWebAuth'
  end

  # The target ShowsTV has its own copy of ShowsKit (inherited) + ShowTVAuth (added here)
  target 'ShowsTV' do
    pod 'ShowTVAuth'
  end

  # Our tests target has its own copy of
  # our testing frameworks, and has access
  # to ShowsKit as well because it is
  # a child of the abstract target 'Shows'

  target 'ShowsTests' do
    inherit! :search_paths
    pod 'Specta'
    pod 'Expecta'
  end
end

我不明白为什么inherit! :search_paths是必要的?所有3个目标ShowsiOSShowsTVShowsTests都可以从其父目标访问ShowsKit

inherit!(来自https://guides.cocoapods.org/syntax/podfile.html#inherit_bang)的具体示例不会增加任何清晰度

target 'App' do
  target 'AppTests' do
    inherit! :search_paths
  end
end

你能帮我理解inherit! :search_paths的用途吗?

2 个答案:

答案 0 :(得分:11)

根据https://guides.cocoapods.org/syntax/podfile.html#inherit_bang inherit!背后的目的  (我同意不是很清楚),是提供3种可用模式之一:

  • :complete目标继承父项的所有行为。
  • :none目标不会从父级继承任何行为。
  • :search_paths目标仅继承父级的搜索路径。

在这个问题的例子中,正在表达:search_paths模式。测试Pod项目时,三种不同的模式可以起到不同的作用。

Here is an additional link与Xcode中的框架搜索路径相关,帮助我清除了一些混淆。

答案 1 :(得分:0)

想要了解目标吊舱但不需要链接的目标(例如,测试目标)可以通过其inherit定义它们search paths吊舱

inherit! :search_paths

意思是“不要将Pod链接到此处,而要让此目标知道它们的存在。”

了解更多here