Xcodeでのプリプロセッサ定義
#ifdef DEBUG ????NSLog(@"debug"); #endif
上記みたいなコードはデバッグ用に必ず登場すると思いますが、このプリプロセッサの"DEBUG"というのをXcodeのプロジェクト設定で定義する方法がやっとわかったので下記にメモ。
もちろんソース上に
#define DEBUG
と直接書いてもいいんですが、これだとあまり意味がなくて、DebugビルドでのみDEBUGを有効にし、リリース用のDistributionビルドでは無効にしたい場合、いちいちソースを書き換えないといけません。そういうことしてると、Romlyみたくデバッグ用のビルドがApp Storeに並んでしまいます(ぉ
やっべーと思って早速検索してみたら、英語のページでいくつか、ズバリの方法が書いてありました。でもどのページでもBuild設定のOther C Flagsに-DDEBUGと書けばいいとしか書いてないんですよね。
-Dというのがdefineコマンドみたいなもんで、続けて書いた文字列、この例ならDEBUGが定義され、#ifdef DEBUGが真になると。他にも-DDEBUG=1と書けば、#if (DEBUG==1)などと値も設定できるらしいです。
だがしかし!-DDEBUGを書いた状態でテストしても、#ifdef DEBUGが全然真にならない。原因もわかんないし、仕方なくそれっぽいBuild設定を上から順番に探してみる(Build設定多すぎるよー)と……
GCC 4.2 – Preprocessing
ってちょーそれっぽいグループ発見!
Preprocessor Macrosって そのまんまなキーがあったので、そこにDEBUGって書いてみたら、#ifdef DEBUGばっちり有効になりました!?(>▽<)/
ちなみに、Other C FlagsやPreprocessor Macrosが見つからない場合、Xcodeのメインウィンドウ(プロジェクトウィンドウ?)の左上にあるドロップダウンで、Active SDKをUse Base SDKにすると表示されます。なぜかiPhone DeviceやiPhone Simulatorを選択した状態では表示されません。これもよくあるつまずきポイントらしくてあちこちに書いてありますね。