104

Xcode プロジェクトでプロパティを設定することにより、条件付きコンパイルのシンボルを設定することは可能ですか?

私の目的は、インポート/インクルードを使用せずにすべてのファイルで使用できるシンボルを作成して、一部のプロジェクトで共通クラスのセットが特別な動作を行えるようにすることです。次のように、独自の記号を使用します。

#if TARGET_IPHONE_SIMULATOR
    ...
#endif
4

8 に答える 8

116

ターゲットまたはプロジェクトの設定に移動し、左下の歯車アイコンをクリックして、[ユーザー定義の設定を追加] を選択します。新しい設定名は である必要がありGCC_PREPROCESSOR_DEFINITIONS、右側のフィールドに定義を入力できます。

Steph のコメントによると、完全な構文は次のとおりです。

constant_1=VALUE constant_2=VALUE

シンボルに値を与えるのではなく、シンボルを #define するだけの場合は、「=」は必要ないことに注意してください(#ifdefステートメントの場合) 。

于 2008-12-15T03:50:21.907 に答える
86

ユーザー定義の設定を作成する必要はありません。組み込みの設定「プリプロセッサ マクロ」は正常に機能します。 代替テキスト http://idisk.mac.com/cdespinosa/Public/Picture%204.png

同じプレフィックス ファイルを使用する複数のターゲットまたはプロジェクトがある場合は、代わりにプリコンパイル済みヘッダーで使用されないプリプロセッサ マクロを使用してください。これにより、マクロ定義の違いによって不要な追加のプリコンパイル済みヘッダー セットがトリガーされなくなります。

于 2009-01-26T05:36:57.133 に答える
41

補足として、この手法を使用してターゲットで文字列を定義している場合は、次のように定義して使用する必要がありました。

[ビルド設定] -> [プリプロセッサ マクロ] では、はい、バックスラッシュは定義で重要です:

APPURL_NSString=\@\"www.foobar.org\"

そしてソースコードでは:

objectManager.client.baseURL = APPURL_NSString;
于 2012-01-09T18:34:07.720 に答える
5

このファイルを使用して、*_Prefix.pchプロジェクト全体のマクロを宣言できます。通常、そのファイルは[その他のソース]グループにあります。

于 2012-01-20T23:51:54.213 に答える
3

「GCC 4.2 Preprocessing」の下にあります(または検索ボックスに「prepro」と入力してください)...

...しかし、私の人生では、それを機能させることはできません。

標準のデバッグ構成とリリース構成があり、デバッグ構成で DEBUG=1 を定義したいと考えています。しかし、それを値として追加した後:

(設定ウィンドウで) > プリプロセッサ マクロ: DEBUG=1

#if DEBUG
    printf("DEBUG is set!");
#endif 

...決して印刷/呼び出されません。それは私を夢中にさせています...

于 2009-09-06T01:27:52.533 に答える
1

Kevin Laity のコメント (cdespinosa の回答を参照) に応じて、GCC Preprocessing セクションがビルド設定に表示されないことについて、Active SDK を (Base SDK) と言うものにすると、このセクションが表示されます。これを行うには、[Project] > [Set Active Target] > [XXX (Base SDK)] メニューを選択します。XCode (ベース SDK) の異なるバージョンでは、(プロジェクト設定またはプロジェクトのデフォルト) のように異なる場合があります。

このセクションが表示されたら、ユーザー定義の設定を作成するのではなく、プロセッサ マクロに定義を追加できます。

于 2010-04-22T16:50:25.707 に答える
0

前処理セクションを持つターゲットを複製し、名前を任意の名前に変更してから、プリプロセッサ マクロの値を変更できます。

于 2010-09-08T03:49:42.947 に答える