$(SRCROOT) や $(BUILD_DIR) 等の Xcode で使用しているマクロの置換内容の一覧を調べる方法
Info.plistや、ビルド設定をいじっていると、こんな文字列に出くわすかと思います。
- $(PRODUCT_NAME)
- $(TARGET_TEMP_DIR)
- $(SRCROOT)
これらはそれぞれ特別な意味を持ち、Xcode がビルド時だか何だかのタイミングでプロダクト名とか環境に応じたパスとかに置き換えたりしてくれるものです。
が、
「SRCROOTってどこだっけ?プロジェクト直下?それともその一つ下?」
「Library Search Path を指定したいけどこの場所を指定するのにどのマクロを使っていいかわからない」
みたいなことになることが度々あるのではないでしょうか?(僕はあります)
そして困ったことに、これらを網羅したAppleのドキュメントもありません。
(※というのは間違いで、バッチリありました。末尾の追記をご参照ください)
最近やっとその「Xcode で使用しているマクロの置換内容の一覧を見る方法」を見つけたので、ご紹介させていただきます。
方法
env > env.txt
をRun Scriptに登録してビルド実行
これだけです。
ビルド実行すると、プロジェクトフォルダに 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
みたいな感じでズラズラとマクロ名とその置換内容の一覧が出力されます。
ちなみに、Run Script にスクリプトを登録する方法がよくわからない方は、
"xcode run script build phase"
あたりのキーワードでググってみるときっとわかりやすい解説記事が見つかるのではないかと思います。
キャプチャがないとよくわからないかもしれませんが、簡単に手順を書くと、
- Build Phases タブを開く
- 右下にあるAdd Build Phase ボタン押下
- Add Run Script を選択
- スクリプト記入欄があるのでスクリプトをコピペ
こんな感じです。
追記
この記事を公開して5分後ぐらいに@azu_re様よりツイートいただきました。
http://bit.ly/Mq3kkv とかに大体まとまってた気がする
おっしゃる通り大体まとまってました。。
「まとまったドキュメントはない」というのは間違いだったわけですが、この記事に書いた env でやる方法使うと自分の環境での path がわかるので、これはこれでアリかなと思っております。
azu_re様、情報ありがとうございました!