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

  • 122
    Like
  • 2
    Comment
More than 1 year has passed since last update.

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