8

同じ XCode プロジェクト内に 2 つのバージョンの iPhone アプリケーションを作成しようとしています。コードベースはほぼ同じで、異なる動作が必要な場所では、プリプロセッサの条件と${TARGET_NAME}タグを使用することにしました。

OTHER_CFLAGS" " を含むように設定しました-DTARGET_NAME=${TARGET_NAME}

それから私のコードで私がやろうとした

#if TARGET_NAME == myApp
  NSLog(@"pro");
#elif TARGET_NAME == myAppLite
  NSLog(@"lite");
#endif

TARGET_NAME == myApp残念ながら、常に true であるため、常に「lite」が出力TARGET_NAMEされます。私は一生、この文字列比較を評価する方法を理解できません。何か案が?

前もって感謝します

4

3 に答える 3

11

#ifブロック内でそのような文字列を比較することはできません。代わりに、特定のターゲットごとに定義を追加してください。たとえば、フル バージョンのターゲットで、[情報] パネルを開き、[ビルド] タブに移動してFULL_VERSIONGCC_PREPROCESSOR_DEFINITIONSビルド設定に次のようなものを追加します。次に、ライト ターゲットの場合は、次のように入力しますLITE_VERSION。コードでは、次のことができます。

#ifdef FULL_VERSION
NSLog(@"Full");
#else
NSLog(@"Lite");
#endif
于 2009-06-22T13:11:47.940 に答える
-1

条件付き評価を機能させるには、次のようなことを行う必要があります。

#define myApp       1
#define myAppLite   2

事前に、_Prefix.pchファイルのように。

于 2009-07-15T01:40:16.857 に答える