2017-03-02 11 views
8

プロジェクトターゲットのBuild SettingsPreprocessor MacrosセクションにTEST=1を追加しました。コードで使用するときはいつでも、プリプロセッサはそれが定義されていないと判断します。ターゲットプリプロセッサXcodeのプリプロセッサでマクロが無視される

  1. ALT +それをクリックは
  2. 構文の色付けが構文の自動補完が持つ、例えば良く

動作しないだけでなく

  • 動作しません疑問符を示しています。

    #if TEST 
    
    // a 
    
    #else 
    
    // b 
    
    #endif 
    

    この現象:

    012そう
    1. 構文の色付けのみだけ(私は以前に述べたように、それは1として定義されていても)、プリプロセッサはTESTを見つけることができないので、これがある// b

    のために働く// b

  • 構文オートコンプリートのために働きますfalseとして扱います。

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

    編集:

    私のユースケースは、複数のプロジェクトの目標に関連しています。そのため、最初のターゲットの名前はFirstとなり、では、1で定義されたTESTプリプロセッサマクロが作成されます。私が定義されていないプリプロセッサマクロでSecondという名前の別のプロジェクトのターゲットを作成し、TEST0false /が定義されていない)である場合にのみ、それのためにいくつかのコードを追加したい場合は

    、私はそれが#elseブロック(// b)に入れます。その構文の色分けや自動補完を知る

    // bのために働くことはOK働くように、それは見えますが、私は(しゃれがを目的とする)First 1に、現在のターゲットを変更しても、それを構築する場合Secondが選択されているように、それはまだ動作します。

  • +0

    プロジェクトをビルドすると、プリプロセッサはコンパイル時のフラグを検出し、カラーリングとオートコンプリートを表示します。それを試してみましたか? – manishg

    +0

    もちろん私はプロジェクトを作りました。 –

    +0

    デバッグとリリースの両方でそれをしましたか?それは私の最後に働く。 – manishg

    答えて

    1

    ターゲット - > Edit Scheme - > Run - > Infoに移動し、Build Configurationを確認してください。ビルド設定でプリプロセッサマクロを追加している間、正しいビルド構成と正しいターゲットのためにマクロを追加していることを確認してください。

    ≈

    私は両方のデバッグのために追加して、私のターゲットアプリケーション(テスト-ObjectiveC)のために、上記のようにビルドをリリースすることで試してみました。だから私はこの設定でコードの下で試したとき、あなたはそれに応じて構文の色を見ることができます。

    enter image description here

    +0

    cmd +クリックするとどうなりますか? –

    +0

    @lulianはあなたがcmd + clickを使ってそこでチェックしたいものがわからない。 –

    +0

    ビルド設定を開くことがわかっているのか、私の例のように疑問符を表示しているのか不思議でした。私の大きなプロジェクトには、これを妨げる他の設定があるかもしれません。私は新しいプロジェクトでそれを自分自身でテストしようとし、その問題が自分の設定の1つに起因するかどうかを調べようとします。 –

    1

    あなたはスウィフトでこのようにそれをしたい場合は、このようなあなたのBuild SettingsOTHER_SWIFT_FLAGSという名前User-Defined設定を追加する必要があります

    OTHER_SWIFT_FLAGS user-defined setting

    そして、あなたのコードに次のように入力:

    #if TEST1 
    
    // Debug 
    
    #endif 
    
    #if TEST2 
    
    // Release 
    
    #endif 
    

    これはなぜ必要なのかわかりませんが、ネイティブのXcode Targetを調べて、同じルートプロジェクトを持つ複数のアプリケーションに対して特定の動作を使用することは興味深いでしょう。これがあなたの望むものなら、記事にはAppCoda using Targets with XCodeを見てください。

    関連する問題