CocoaPodsでカスタムコンフィギュレーションを使う


コンフィギュレーションを分けるとリンクするライブラリやフラグを切り替えることが出来るので、例えばデバッグ時のみビューインスペクタライブラリをリンクしたり、フィードバック用のボタンを追加する、といったことが可能です。

Xcodeでプロジェクトを作成すると自動的にDebug, Releaseという2つのコンフィギュレーションが作成されるのですが、これ以外のコンフィギュレーションをCocoaPodsから使用するには少し追加手順が必要だったのでメモ書きです。

# 要件

* Adhoc用のコンフィギュレーションを追加したい
* Adhoc用コンフィギュレーションでは、TestFlightのライブラリをリンクしたい


# 手順
## コンフィギュレーションの追加

プロジェクトのInfoタブから新しいコンフィギュレーションを追加します。AdhocはRelease版とほぼ同等なので、Releaseコンフィギュレーションをコピーする形で作成します。

![kobito.1412997661.362356.png](https://qiita-image-store.s3.amazonaws.com/0/29860/2a5851b3-79dd-ee4c-c124-1aa4a81eb4e8.png "kobito.1412997661.362356.png")


## コンフィギュレーションファイルの追加

次に、Adhoc用のコンフィギュレーションファイルを追加します。XcodeからNew Fileを選択して、iOS -> Other -> Configuration settings fileを選択します。

![kobito.1412996835.599144.png](https://qiita-image-store.s3.amazonaws.com/0/29860/310bdcfb-bf9d-37b5-dfba-6f31a53e5b2b.png "kobito.1412996835.599144.png")


ファイル名は **Config.adhoc.xcconfig ** など適当な名前にします。

![kobito.1412997770.321065.png](https://qiita-image-store.s3.amazonaws.com/0/29860/60391066-0ef0-fe0d-008e-cefe93f7cb52.png "kobito.1412997770.321065.png")


## Podfileの作成

以下のPodfileは例です。 **TestFlightFeedback** というフィードバックフォーム用のライブラリを、Debug, Adhocコンフィギュレーションに追加します。また、SparkInspector（ビューインスペクタライブラリ）をDebugコンフィギュレーションに追加します。

```ruby:Podfile
platform :ios, "7.0"

source 'https://github.com/CocoaPods/Specs.git'

inhibit_all_warnings!

pod "TestFlightSDK", :configuration => ["Debug", "Adhoc"]
pod "TestFlightFeedback", :configuration => ["Debug", "Adhoc"]
pod "SparkInspector", :configuration => ["Debug"]
```


## ライブラリのインストール

```bash
$ pod install
Analyzing dependencies
Downloading dependencies
Installing SparkInspector (1.3.0)
Installing TestFlightFeedback (2.1.1)
Installing TestFlightSDK (3.0.2)
Generating Pods project
Integrating client project

[!] From now on use `example.xcworkspace`.

[!] CocoaPods did not set the base configuration of your project because because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target example` to `Pods/Target Support Files/Pods/Pods.adhoc.xcconfig` or include the `Pods/Target Support Files/Pods/Pods.adhoc.xcconfig` in your build configuration.
```

インストール後、 *Pods/Target Support Files/Pods* ディレクトリにコンフィギュレーションファイルが追加されます。次のファイルが作成されることを確認しましょう。

* Pods.debug.xcconfig
* Pods.adhoc.xcconfig
* Pods.release.xcconfig


## Adhocコンフィギュレーションの選択と、コンフィギュレーションファイルの編集

Adhocコンフィギュレーションの場合には、Adhoc用のコンフィギュレーションファイルを使用します。プロジェクトのInfoタブからAdhocのコンフィギュレーションを選択し、プルダウンメニュー内のConfig.adhocを選択しましょう。

![kobito.1412997980.341599.png](https://qiita-image-store.s3.amazonaws.com/0/29860/4ce4bc71-50b7-08ca-3def-de1fc5b92b1a.png "kobito.1412997980.341599.png")


pod install時に表示されているように、CocoaPodsはDebug, Release以外のコンフィギュレーションを取り扱わないので、カスタムコンフィギュレーションを使用する場合には自分でファイルを作成してincludeする必要があります。

先ほど追加した *Config.adhoc.xcconfig* を選択して、ファイルに以下のテキストを追加します。

```c
#include "Pods/Target Support Files/Pods/Pods.adhoc.xcconfig"
```

このように書いておくと、カスタムコンフィギュレーションでもCococaPodsを使用することが出来るようになります。

----

参考

* [XCConfigを複数ファイル構成にする方法](http://odoruinu.net/blog/2014/01/07/xcconfig%E3%82%92%E8%A4%87%E6%95%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%A7%8B%E6%88%90%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/)