2016-11-14 12 views
1

私はいくつかのターゲットを持っており、それらに応じてヘッダをインポートする必要があります。私はいくつかのプリプロセッサ値を定義し、その後の#ifdefでそれを確認することによってこれを行うことができますが、私のような何かを行うにそこにあればどのような方法、思ったんだけど:、uは以下の例のためのように使用することができますコンパイル時にターゲット名を決定する

#if TARGET_NAME = "FirstTarget" 
#import "SomeHeader.h" 
#endif 

答えて

0

//Your current target's are defined 
#define FIRST_TARGET "FirstTarget" 
#define SECOND_TARGET "SecondTarget" 
#define THIRD_TARGET "ThirdTarget" 

//set which target u want to run 
#define TARGET_NAME FIRST_TARGET //SECOND_TARGET //THIRD_TARGET 

//use like below 

#if (TARGET_NAME == FIRST_TARGET) //or u can directly specify name instead of defining at the beginning 
    #import "SomeHeader.h" 
    //other headers 
#elif (TARGET_NAME == SECOND_TARGET) 
    //header to be in second target 
#elif (TARGET_NAME == THIRD_TARGET) 
    // other header 
#endif 

編集:詳細はこのhearを見るためのマクロは、変数の長さの値を比較していないので、私はそれを得た

が、それはエラーになります。

ので、仕事をするために、uは以下のようにそれを変更することができ、

//Your current target's are defined, instead of strings give some constant values 
#define FIRST_TARGET 1//@"FirstTarget" 
#define SECOND_TARGET 2//@"SecondTarget" 
#define THIRD_TARGET 3//@"ThirdTarget" 

//set which target u want to run 
#define TARGET_NAME FIRST_TARGET //SECOND_TARGET //THIRD_TARGET 

//use like below 
#if TARGET_NAME == FIRST_TARGET 
#import "SomeHeader.h" 
//other headers 
#elif (TARGET_NAME == SECOND_TARGET) 
//header to be in second target 
#elif (TARGET_NAME == THIRD_TARGET) 
// other header 

#endif 
+0

それは –

+0

動作しません、私は答えを編集します..申し訳ありませんが私は –

+0

はあなたに感謝の答えを投稿するときに、それをテストdidntのあなたの答えは、プリプロセッサーマクロの定義と比べてはるかに良く見えません。いくつかの調査の後、私はその解決策に立ち止まった –

関連する問題