18

私は iOS アプリで CocoaPods を数週間使用しており、テストした 1 つのターゲット (「MainApp」と呼びましょう) で完全に動作します。ただし、別のターゲット (「MyAppLite」) をビルドしたいのですが、ビルドが失敗したことに気付きました (ポッドのヘッダー ファイルの 1 つにファイルが見つかりません)。

私が気づいたビルド設定の違いは次のとおりです。

  • その他のリンカー フラグには、MyAppLite に必要なフレームワークが含まれていません
  • フレームワーク/ヘッダー/ライブラリの検索パスがすべて MyAppLite で空です
  • MainApp のユーザー定義のビルド設定が MyAppLite に存在しない

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 ドキュメントの複数のターゲットも参照してください。

于 2013-08-29T09:59:44.113 に答える