web-dev-qa-db-ja.com

ターゲットプリプロセッサマクロは、Xcodeのプリプロセッサによって無視されます

プロジェクトターゲットのTEST=1Preprocessor MacrosセクションにBuild Settingsを追加しましたが、コードで使用するたびに、プリプロセッサはそれが定義されていないと見なします。

  1. alt +クリックすると疑問符が表示されます
  2. 構文の色付けがうまく機能しない
  3. 構文のオートコンプリートがうまく機能しない

たとえば、次のようになります。

#if TEST

// a

#else

// b

#endif

この動作があります:

  1. 構文の色付けは// bでのみ機能します
  2. 構文オートコンプリートは// bに対してのみ機能します

これは、プリプロセッサがTESTを見つけることができないため(前述のように1として定義されている場合でも)、falseとして扱われるためです。

これらの問題を解決する方法はありますか?

編集:

私のユースケースは、複数のプロジェクトターゲットに関連しています。したがって、最初のターゲットの名前がFirstであり、値1で定義されたTESTプリプロセッサマクロがあるとします。

プリプロセッサマクロが定義されていないSecondという名前の別のプロジェクトターゲットを作成し、TEST0false/not defined)の場合にのみコードを追加したい場合)、それを#elseブロック(// b)に配置します。

構文の色付けとオートコンプリートが// bで機能することを知っていると、問題なく機能するように見えますが、現在のターゲットをFirstに変更すると(pun意図)ビルドしても、Secondが選択されているので機能します。

12
Iulian Onofrei

Swiftでこのようにしたい場合は、User-DefinedOTHER_Swift_FLAGSという名前のBuild Settings設定を次のように追加する必要があります。

OTHER_Swift_FLAGS user-defined setting

次に、コードに次のように入力します。

#if TEST1

// Debug

#endif

#if TEST2

// Release

#endif

なぜこれが必要なのかわかりませんが、同じルートプロジェクトを持つ複数のアプリに特定の動作を使用するために、ネイティブXcodeターゲットを調べることは興味深いかもしれません。これが必要な場合は、次の記事を調べる必要があります: XCodeでターゲットを使用するAppCoda

6
cdescours

ターゲット->スキームの編集->実行->情報に移動し、ビルド構成を確認するだけです。ビルド設定でプリプロセッサマクロを追加するときは、正しいビルド構成と正しいターゲットのマクロを追加していることを確認してください。

≈

ターゲットアプリ(Test-ObjectiveC)について、上記のようにデバッグビルドとリリースビルドの両方を追加してみました。したがって、この設定で以下のコードを試してみると、それに応じて構文の色が表示されます。

enter image description here

3
Harish Gupta