LoginSignup
95
60

More than 5 years have passed since last update.

xcconfigで快適なBuild Settingsライフを

Last updated at Posted at 2017-10-07

なぜこの記事を書いたか?

XcodeのBuild Settingsメニューで設定する問題点

アプリの様々な設定を主に行うBuild Settingsですが、XcodeのUI的にいくつか問題があります

  • diffが見づらい(debugの設定なのかreleaseなのか読み取れない)
  • テキストファイルのような柔軟な変更ができない(一括置換など)
  • undoできない

ので人的ミスが起こる可能性が高い

xcconfigとは?

Xcode の Build Settings をコードで設定するファイルです。
XcodeのGUIと違って

  • diffがわかりやすい
  • 一括置換などテキスト編集がなんでもできる
  • undoし放題

プロジェクトに導入してみた

手順1:Build Configurationごとの設定ファイルを用意する

Xcodeで新規ファイルを作成する際、Configuration Settings Fileを選択

new_file.png

必要な設定をファイルに書く

Buildする環境ごとに設定が違う場合は、ベースとなるConfigファイルを作って、それをインクルードしたConfig.debug.xcconfigのようなファイルを用意するのが良いです。
他ファイルのConfigファイルの設定は#includeでインクルードできます

project_dir.png

TIPS

Xcode の Build Settings上でcmd+aしてコピペすれば、現在の設定を丸ごとxcconfigにコピーできます

手順2:プロジェクトで設定ファイルを読み込む

PROJECT > ConfigurationsからBuild SchemeごとのConfigファイルを選択
build-setting.png

手順3:設定の反映

Xcode上のBuild Settingsで設定を直書きしている場合、そちらの設定が勝ちます。
そのためxcconfigの設定を反映するためには、Xcode上のBuild Settingsは項目ごとに$(inherited)を指定する必要があります(=設定の行にカーソルを合わせてDeleteキーで削除すればOK)

settings-order.png

ハマったこと

cocoapodsを使っている場合、podsの設定の#includeが必要

cocoapodsが生成したConfigファイルの設定も読み込む必要があるため、
podsの設定を各Configurationごとのファイルで#includeする必要があります

#include "Pods/Pods/Target Support Files/Pods-xxx/Pods-xxx.release.xcconfig"

最終的にこんな感じのファイルになりました

(Config.debug.xcconfigの例)

#include "xxx/xxx/Supporting Files/Config.base.xcconfig"
#include "Pods/Target Support Files/Pods-xxxTarget-xxx/Pods-xxxTarget-xxx.debug.xcconfig"

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 XXX=1
IPHONEOS_DEPLOYMENT_TARGET = 11.0

... 各設定続く

xcconfigを活用することで、project設定周りの人的ミスをいくらか減らせるかと思います

参考記事

http://qiita.com/paming/items/34f94a829c09eddfee95
http://www.lifeaether.com/self/blog/?p=523

95
60
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
95
60