Xcode プロジェクトでプロパティを設定することにより、条件付きコンパイルのシンボルを設定することは可能ですか?
私の目的は、インポート/インクルードを使用せずにすべてのファイルで使用できるシンボルを作成して、一部のプロジェクトで共通クラスのセットが特別な動作を行えるようにすることです。次のように、独自の記号を使用します。
#if TARGET_IPHONE_SIMULATOR
...
#endif
Xcode プロジェクトでプロパティを設定することにより、条件付きコンパイルのシンボルを設定することは可能ですか?
私の目的は、インポート/インクルードを使用せずにすべてのファイルで使用できるシンボルを作成して、一部のプロジェクトで共通クラスのセットが特別な動作を行えるようにすることです。次のように、独自の記号を使用します。
#if TARGET_IPHONE_SIMULATOR
...
#endif
ターゲットまたはプロジェクトの設定に移動し、左下の歯車アイコンをクリックして、[ユーザー定義の設定を追加] を選択します。新しい設定名は である必要がありGCC_PREPROCESSOR_DEFINITIONS
、右側のフィールドに定義を入力できます。
Steph のコメントによると、完全な構文は次のとおりです。
constant_1=VALUE constant_2=VALUE
シンボルに値を与えるのではなく、シンボルを #define するだけの場合は、「=」は必要ないことに注意してください(#ifdef
ステートメントの場合) 。
ユーザー定義の設定を作成する必要はありません。組み込みの設定「プリプロセッサ マクロ」は正常に機能します。 代替テキスト http://idisk.mac.com/cdespinosa/Public/Picture%204.png
同じプレフィックス ファイルを使用する複数のターゲットまたはプロジェクトがある場合は、代わりにプリコンパイル済みヘッダーで使用されないプリプロセッサ マクロを使用してください。これにより、マクロ定義の違いによって不要な追加のプリコンパイル済みヘッダー セットがトリガーされなくなります。
補足として、この手法を使用してターゲットで文字列を定義している場合は、次のように定義して使用する必要がありました。
[ビルド設定] -> [プリプロセッサ マクロ] では、はい、バックスラッシュは定義で重要です:
APPURL_NSString=\@\"www.foobar.org\"
そしてソースコードでは:
objectManager.client.baseURL = APPURL_NSString;
このファイルを使用して、*_Prefix.pch
プロジェクト全体のマクロを宣言できます。通常、そのファイルは[その他のソース]グループにあります。
「GCC 4.2 Preprocessing」の下にあります(または検索ボックスに「prepro」と入力してください)...
...しかし、私の人生では、それを機能させることはできません。
標準のデバッグ構成とリリース構成があり、デバッグ構成で DEBUG=1 を定義したいと考えています。しかし、それを値として追加した後:
(設定ウィンドウで) > プリプロセッサ マクロ: DEBUG=1
#if DEBUG
printf("DEBUG is set!");
#endif
...決して印刷/呼び出されません。それは私を夢中にさせています...
Kevin Laity のコメント (cdespinosa の回答を参照) に応じて、GCC Preprocessing セクションがビルド設定に表示されないことについて、Active SDK を (Base SDK) と言うものにすると、このセクションが表示されます。これを行うには、[Project] > [Set Active Target] > [XXX (Base SDK)] メニューを選択します。XCode (ベース SDK) の異なるバージョンでは、(プロジェクト設定またはプロジェクトのデフォルト) のように異なる場合があります。
このセクションが表示されたら、ユーザー定義の設定を作成するのではなく、プロセッサ マクロに定義を追加できます。
前処理セクションを持つターゲットを複製し、名前を任意の名前に変更してから、プリプロセッサ マクロの値を変更できます。