47
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

$(SRCROOT)や$(BUILD_DIR)等のXcodeで使用しているマクロの置換内容の一覧を調べる

Last updated at Posted at 2013-01-08

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

といった感じでズラズラとマクロ名とその置換内容の一覧が出力されます。

47
40
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
47
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?