強火で進め このページをアンテナに追加 RSSフィード

整理された情報は こちら へどうぞ。

2010年10月02日

[]xcconfigファイルでビルド設定を外部ファイル化

twitterでxcconfigファイルという便利なファイルが有る事を教えて貰いました。

この便利なファイルを使ってビルド設定を外部ファイル化する方法を紹介。

xcconfigファイル の作成と設定

まずは xcconfigファイル の作成。

こちらは「新規ファイル作成」をしたときの「Other」に有る「Configuration Setting File」がそのファイルとなります。

f:id:nakamura001:20101003012132p:image:w320

取り敢えずここを選択して DebugSetting.xcconfig という名称でファイルを作成します。

次にビルドの設定を開き、「構成」を「Debug」にし、「ベース」に先程作成したファイルを選択します。

f:id:nakamura001:20101003012711p:image:w320

こんな感じに変更。

f:id:nakamura001:20101003014202p:image

これでDebugビルド時にこのファイルに書かれている設定が反映される様になります。

動作検証

このファイルの設定が反映されているかプリプロセッサマクロの定義を使って動作検証しまてみます。

設定はそれぞれ以下の様にしました。

【Debugビルド】

DebugSetting.xcconfig を作成し、「ベース」に選択。ファイルには以下の内容を記述

GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1

【Releaseビルド】

ReleaseSetting.xcconfig を作成し、「ベース」に選択。ファイルには以下の内容を記述

GCC_PREPROCESSOR_DEFINITIONS = RELEASE=1

プログラム本体には以下の内容を書いて検証してみました。

#if DEBUG
	NSLog(@"DEBUG定義されてるよ");
#else
	NSLog(@"DEBUG定義されて無いよ");
#endif
#if RELEASE
	NSLog(@"RELEASE定義されてるよ");
#else
	NSLog(@"RELEASE定義されて無いよ");
#endif

実行した結果はこちら

【Debugビルド時】

2010-10-03 01:12:50.783 Test[20670:207] DEBUG定義されてるよ
2010-10-03 01:12:50.785 Test[20670:207] RELEASE定義されて無いよ

【Releaseビルド時】

2010-10-03 01:13:17.369 Test[20726:207] DEBUG定義されて無いよ
2010-10-03 01:13:17.372 Test[20726:207] RELEASE定義されてるよ

ちゃんとそれぞれのファイルの内容が反映されているのが確認出来ました。

次に xcconfigファイル で定義したものをビルド設定の方でも定義したらどうなるのかを検証しました。

  • xcconfigファイル → DEBUG=1
  • ビルド設定 → DEBUG=2

f:id:nakamura001:20101003013027p:image

こんなプログラムで検証しました。

#if DEBUG == 1
	NSLog(@"DEBUG==1 だよ");
#elif DEBUG == 2
	NSLog(@"DEBUG==2 だよ");
#else
	NSLog(@"DEBUG定義されて無いよ");
#endif

実行結果。

2010-10-03 01:29:40.536 Test[20857:207] DEBUG==2 だよ

結果はビルド設定の方が優先。 xcconfigファイル を「ベース」って所に設定したのでそうだろうとは思ってましたが予想通りした。

このファイルによく使うライブラリのヘッダやライブラリのディレクトリを「ヘッダ検索パス」「ライブラリ検索パス」に設定しておけば新しいプロジェクトを作成した時にファイルをプロジェクトにコピーするだけで設定が済んでしまいますね。

設定する項目の定義名については例えば、「ヘッダ検索パス」を設定したい場合はこの様に該当の行を選択した状態で command+c でコピーし、それを xcconfigファイル にペーストして使うのが一番簡単で良いでしょう。

f:id:nakamura001:20101003014554p:image

コピーした結果はこちら

HEADER_SEARCH_PATHS = 

毎回、新しいプロジェクトファイルを作成したときに追加してるビルド設定などをこのファイルに記述しておけばかなり最初の手間が省けるのではないでしょうか?

関連情報

Xcodeビルド設定の取り扱い

http://developer.apple.com/jp/tools/xcode/xcodebuildsettings.html

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。

トラックバック - http://d.hatena.ne.jp/nakamura001/20101002/1286038020