LoginSignup
167
153

More than 5 years have passed since last update.

XCodeのBuild Settingsで、値が決まっていくルール

Last updated at Posted at 2013-11-07

Build Settingsでの値の決まり方

Build Settingの値はどうやって決まっていくのか?Build Settingsを開いて"Levels"を見ると、どのレベルでどんな値になっていくのかを見る事が出来ます。

PAMEventBoard.xcworkspace_—_PAMEventBoard.xcodeproj_と_Kobito-14.png

iOS Default → (xcconfig)→Project→Target の順で、値を「上書き」し続ける形で値が決定していきます。

各Levelにて、値の設定が無ければ親の設定で上書きされています。しかし、何か設定をすると親の設定が消えてしまいます。その時は$(inherited)を追加して親の設定を明示的に継承します。

  • そのレベルでの設定無し→親の設定で上書き
  • そのレベルでの設定有り
    • $(inherited)が有る→$(inherited)を親の設定と置き換える
    • $(inherited)が無い→親の設定は消える

xcconfigファイルはどこで設定するのか?

xcconfigファイルはテキストファイルなので作るのは簡単です。
↓CocoaPodで生成されたxcconfigファイル

Pods.xcconfig
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/AFNetworking" "${PODS_ROOT}/Headers/DCIntrospect" "${PODS_ROOT}/Headers/TestFlightSDK"
LIBRARY_SEARCH_PATHS = "$(PODS_ROOT)/TestFligh
tSDK"
OTHER_LDFLAGS = -ObjC -lTestFlight -lz -framework CoreGraphics -framework MobileCoreServices -framework QuartzCore -framework Security -framework SystemConfiguration -framework UIKit
PODS_ROOT = ${SRCROOT}/Pods

しかし、ただ作ってプロジェクトに入れただけでは、Build Settingsには出てきません。この登録は、Project設定の中の"Info"→"Configurations"で行います。

PAMEventBoard.xcworkspace_—_PAMEventBoard.xcodeproj-2.png

なぜこんな事を調べてたのか

$(inherited)が、何を継承しているのかがよく分かってなかったからです。階層構造になってるプロジェクトでの親/子プロジェクトの設定を引き継ぐのかと思ってました。。。


167
153
2

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
167
153