18

我已经在我的 iOS 应用程序中使用 CocoaPods 几个星期了,它与我一直在测试的一个目标(我们称之为“MainApp”)完美配合。但是,我现在想构建一个不同的目标(“MyAppLite”)并注意到构建失败(在 pod 的头文件之一中找不到文件)。

我注意到的构建设置的差异如下:

  • 其他链接器标志不包含 MyAppLite 中所需的框架
  • 框架/标题/库搜索路径在 MyAppLite 中都是空的
  • MyAppLite 中不存在 MainApp 中的任何用户定义的构建设置

如何确保在运行pod install时所有目标都链接了库?

作为参考,这是我的 Podfile:

platform :ios, '5.0'

pod 'TTTAttributedLabel', '~> 1.7.0'
pod 'iRate', '~> 1.7.5'
pod 'MBProgressHUD', '~> 0.6'
pod 'FlurrySDK', '~> 4.2.3'
pod 'ACSimpleKeychain', '~> 0.0.1'
pod 'WEPopover', '~> 0.0.1'
pod 'AFNetworking', '~> 1.3.1'
pod 'Nimbus', '~> 1.0.0'
pod 'QuincyKit', '~> 2.1.9'
4

4 回答 4

39

对于 CocoaPods 1.0.0,开发人员的建议是使用abstract_target(但与 0.39.0 不兼容):

platform :ios, '5.0'

abstract_target 'defaults' do
    pod 'TTTAttributedLabel', '~> 1.7.0'
    pod 'iRate', '~> 1.7.5'
    pod 'MBProgressHUD', '~> 0.6'
    pod 'FlurrySDK', '~> 4.2.3'
    pod 'ACSimpleKeychain', '~> 0.0.1'
    pod 'WEPopover', '~> 0.0.1'
    pod 'AFNetworking', '~> 1.3.1'
    pod 'Nimbus', '~> 1.0.0'
    pod 'QuincyKit', '~> 2.1.9'

    target 'MyApp'
    target 'MyAppLite'
end

对于 CocoaPods 0.39.0 + 1.0.0 兼容性,使用def效果很好(但开发人员不推荐):

platform :ios, '5.0'

def default_pods
    pod 'TTTAttributedLabel', '~> 1.7.0'
    pod 'iRate', '~> 1.7.5'
    pod 'MBProgressHUD', '~> 0.6'
    pod 'FlurrySDK', '~> 4.2.3'
    pod 'ACSimpleKeychain', '~> 0.0.1'
    pod 'WEPopover', '~> 0.0.1'
    pod 'AFNetworking', '~> 1.3.1'
    pod 'Nimbus', '~> 1.0.0'
    pod 'QuincyKit', '~> 2.1.9'
end

target 'MyApp' do
    default_pods
end

target 'MyAppLite' do
    default_pods
end
于 2016-01-20T16:24:49.443 回答
19

使用 CocoaPods 1.x

你可以使用target积木

platform :ios, '13.0'


def default_pods
    pod 'TTTAttributedLabel', '~> 1.7.0'
    pod 'iRate', '~> 1.7.5'
    pod 'MBProgressHUD', '~> 0.6'
    pod 'FlurrySDK', '~> 4.2.3'
    pod 'ACSimpleKeychain', '~> 0.0.1'
    pod 'WEPopover', '~> 0.0.1'
    pod 'AFNetworking', '~> 1.3.1'
    pod 'Nimbus', '~> 1.0.0'
    pod 'QuincyKit', '~> 2.1.9'
end

target 'MyApp' do
  default_pods
end

target 'MyAppLite' do
  default_pods
end

相关文件

于 2013-08-29T10:51:04.237 回答
8

如果您有大量目标并且不想每次都添加新目标,则可以使用此

def common_pods

   pod 'TTTAttributedLabel', '~> 1.7.0'
   pod 'iRate', '~> 1.7.5'
   pod 'MBProgressHUD', '~> 0.6'
   pod 'FlurrySDK', '~> 4.2.3'
   pod 'ACSimpleKeychain', '~> 0.0.1'
   pod 'WEPopover', '~> 0.0.1'
   pod 'AFNetworking', '~> 1.3.1'
   pod 'Nimbus', '~> 1.0.0'
   pod 'QuincyKit', '~> 2.1.9'

end

project = Xcodeproj::Project.open “./<projectNameHere>.xcodeproj"

project.targets.each do |t|

target t.name do

    common_pods

end
于 2018-06-15T11:31:02.423 回答
3

从文档:

如果未指定明确的目标,则 Pods 目标将与项目中的第一个目标链接。

您可以使用link_with链接更多目标。

如果您需要针对不同目标的不同依赖项配置,另请参阅Cocoapods 文档中的Multiple Targets

于 2013-08-29T09:59:44.113 回答