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
同じプレフィックスファイルを使用する複数のターゲットまたはプロジェクトがある場合は、代わりにプリコンパイル済みヘッダーで使用されないプリプロセッサーマクロを使用してください。そうすると、マクロ定義の違いが不要なプリコンパイル済みヘッダーのセットをトリガーしません。
補足として、この手法を使用してターゲットの文字列を定義している場合、これを定義して使用する必要があります。
Build Settings-> Preprocessor Macrosで、yesバックスラッシュは定義で重要です:
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)と表示し、このセクションを表示します。これを行うには、[プロジェクト]> [アクティブターゲットの設定]> [XXX(Base SDK)]を選択します。 XCode(Base SDK)の異なるバージョンでは、(Project SettingまたはProject Default)のように異なる場合があります。
このセクションが表示されたら、ユーザー定義の設定を作成するのではなく、定義をプロセッサマクロに追加できます。
Xcode 9.4.1およびC++プロジェクトの場合。 const char*
プリプロセッサマクロをDebugとReleaseビルドの両方に追加しています。
前処理セクションを持つターゲットを複製し、名前を任意の名前に変更してから、プリプロセッサマクロ値を変更できます。