Wie überprüfe ich die TARGET_NAME meiner iPhone App auf XCode?

8

Ich versuche, zwei Versionen meiner iPhone-Anwendung im selben XCode-Projekt zu haben. Die Codebasis ist fast gleich und wo ich verschiedene Verhaltensweisen haben muss, habe ich mich entschieden, die Präprozessor-Bedingungen und das ${TARGET_NAME} -Tag zu verwenden.

Ich habe OTHER_CFLAGS auf " -DTARGET_NAME=${TARGET_NAME} " gesetzt.

Dann habe ich in meinem Code versucht,

zu tun %Vor%

Leider bekomme ich immer "lite" ausgedruckt, da TARGET_NAME == myApp immer wahr ist: da TARGET_NAME definiert ist. Ich kann nicht für das Leben von mir herausfinden, wie man diesen Schnurvergleich auswertet. Irgendeine Idee?

Danke im Voraus

    
onigiri 22.06.2009, 13:00
quelle

3 Antworten

11

Sie können Zeichenfolgen wie diese in einem #if -Block nicht vergleichen. Fügen Sie stattdessen die Definitionen zu jedem spezifischen Ziel hinzu. Öffnen Sie zum Beispiel auf dem Ziel der Vollversion das Info-Fenster und gehen Sie zum Build-Tab und fügen Sie der% code_% -Build-Einstellung etwas wie FULL_VERSION hinzu. Geben Sie dann für das Lite-Ziel etwas wie GCC_PREPROCESSOR_DEFINITIONS ein. In Ihrem Code können Sie Folgendes tun:

%Vor%     
Jason Coco 22.06.2009, 13:11
quelle
1

Tatsächlich können Sie den Namen des Ziels erhalten, um ihn zu vergleichen, aber dies wird nicht unnötigen Code von anderen Zielen zur Kompilierzeit überspringen, um dies zu tun:

Gehen Sie zuerst zum Menü Produkt - & gt; Schema - & gt; Schema bearbeiten ... (oder CMD + & lt;) Fügen Sie dann im Abschnitt arguments innerhalb von Umgebungsvariablen Folgendes hinzu:

In deinem Code kannst du den Namen des Ziels wie folgt erhalten:

%Vor%

Sie können diese Zeichenfolge jetzt in Runtime vergleichen.

Aber folgen Sie Ihrem Beispiel: Wenn Sie möchten, dass der gesamte Pro-Versionscode zum Zeitpunkt der Kompilierung ausgelassen wird. Du solltest tun was @ jason-coco sagt. Und gehen Sie in Build-Einstellungen zu Präprozessor-Makros und fügen Sie dort $(TARGET_NAME) hinzu:

Der Code innerhalb der # define wird kompiliert und ausgeführt, wenn mein Ziel "MLBGoldPA"

ist %Vor%     
LightMan 30.03.2016 16:42
quelle
-1

Damit Ihre bedingte Auswertung funktioniert, müssen Sie Folgendes tun:

%Vor%

vorher, wie in Ihrer _Prefix.pch Datei.

    
lufasz 15.07.2009 01:40
quelle

Tags und Links