🔧

xcworkspaceに含まれるxcodeproj全てにPodfileを適用させる

2020/12/29に公開

はじめに

CocoaPodsでライブラリを導入する場合、単体のプロジェクト(xcodeproj)に対してライブラリを導入するには

  1. プロジェクトが格納されているディレクトリでpod init

  2. Podfileを編集

    target 'MyApp' do
      use_frameworks!
      pod 'Alamofire', '~> 3.0'
    end
    
  3. pod installを実行してライブラリをインストール

  4. 以降、自動で生成されるワークスペース(.xcworkspace)からXcodeを展開して開発

が一般的な手順かと思いますが、事前にこちらで複数のxcodeprojを内包したxcworkspaceを定義して、そのワークスペース全体に対して(=ワークスペースに含まれるxcodeproj全てに対して)ライブラリを一括で導入する方法もあります。

手順

Podfileでabstract_targetを定義し、以下のように記述する。abstract_targetの名前自体は任意で良い。

# There are no targets called "Shows" in any Xcode projects
abstract_target 'Shows' do
  pod 'ShowsKit'

  # Has its own copy of ShowsKit + ShowWebAuth
  target 'ShowsiOS' do
    pod 'ShowWebAuth'
  end

  # Has its own copy of ShowsKit + ShowTVAuth
  target 'ShowsTV' do
    pod 'ShowTVAuth'
  end
end

あるいは、Podfileには暗黙的に abstact targetが存在するので、共通してイントールするライブラリを各targetの上にpod 'HogeKit'を記述する

pod 'ShowsKit'

# Has its own copy of ShowsKit + ShowWebAuth
target 'ShowsiOS' do
  pod 'ShowWebAuth'
end

# Has its own copy of ShowsKit + ShowTVAuth
target 'ShowsTV' do
  pod 'ShowTVAuth'
end

参考

https://guides.cocoapods.org/using/the-podfile.html

https://qiita.com/rockname/items/bbe73a001568f0f5e801

Discussion