Info.plistや、ビルド設定を変更したりしていると、こんな文字列に出くわします。
- $(PRODUCT_NAME)
- $(TARGET_TEMP_DIR)
- $(SRCROOT)
これらはそれぞれ特別な意味を持ち、Xcodeがビルド時等の様々なタイミングでプロダクト名や環境に応じたパスに置き換えたりしてくれるものです。
複雑なパスを簡単な文字列で指定できるので便利なのですが、「SRCROOTがプロジェクトフォルダ直下かそれともその一つ下かわからなくなる」「Library Search Pathを指定したいがどのマクロを使っていいかわからない」といった状況で、その置換内容を逆に知りたい場合があります。
このXcodeマクロに関するドキュメントとしては、AppleのXcode Build Setting Referenceに情報がまとまっているのですが、たとえばBUILT_PRODUCTS_DIRの項を見てみると
$SYMROOT/BuiltProducts: When DEPLOYMENT_LOCATION = YES AND RETAIN_RAW_BINARIES = YES,
$CONFIGURATION_BUILD_DIR: Is the alternative.
といった感じで、条件分岐があったり他の環境変数との入れ子があったりして、これだけを見てマクロの置換内容を具体的に知るのは容易ではありません。
##現在の環境でのXcodeマクロの置換内容を一覧表示する方法
次のスクリプトをRun Scriptに登録(Build PhasesタブのAdd Build Phaseボタンから登録できます)してビルド実行することで、現在の環境でのXcodeで使用しているマクロの置換内容を一覧表示することができます。
env > env.txt
ビルド実行すると、プロジェクトフォルダに env.txt というファイルが生成され、
PRODUCT_NAME=xxxxxx
TEMP_FILES_DIR=/Users/xxxx/Library/Developer/Xcode/DerivedData/xxxxx/Build/Intermediates/xxxx.build/Debug-iphoneos/xxxx.build
SRCROOT=/Users/xxxx/xxx/xxxx/xxxx
といった感じでズラズラとマクロ名とその置換内容の一覧が出力されます。