Ziel-Präprozessor-Makros werden vom Präprozessor in Xcode ignoriert

8

Ich habe TEST=1 im Abschnitt Preprocessor Macros des Build Settings des Projektziels hinzugefügt, und wenn ich es im Code verwende, denkt der Präprozessor, dass er nicht definiert ist.

  1. alt + Klick darauf zeigt ein Fragezeichen
  2. Die Syntaxfärbung funktioniert nicht gut
  3. Die automatische Vervollständigung der Syntax funktioniert nicht gut

Zum Beispiel mit:

%Vor%

hat dieses Verhalten:

  1. Syntax coloring funktioniert nur für // b
  2. Die automatische Syntaxvervollständigung funktioniert nur für // b

Dies liegt daran, dass der Präprozessor TEST nicht finden kann (selbst wenn er wie oben angegeben als 1 definiert ist), also behandelt er ihn als false .

Gibt es eine Möglichkeit, diese Probleme zu lösen?

Bearbeiten:

Mein Anwendungsfall bezieht sich auf mehrere Projektziele. Also, sagen wir, dass das anfängliche Ziel den Namen First hat, welches das TEST Präprozessormakro mit dem Wert 1 definiert hat.

Wenn ich ein anderes Projektziel mit dem Namen Second ohne definierte Präprozessor-Makros erstelle und nur Code hinzufügen möchte, wenn TEST 0 ( false / nicht definiert) ist, werde ich es einfügen Der #else -Block ( // b ).

Wenn man weiß, dass Syntax-Färbung und Autovervollständigung für // b funktioniert, sieht es so aus, als ob es funktioniert, aber wenn ich das aktuelle Ziel in First one ( Wortspiel beabsichtigt ) ändere und es sogar baue funktioniert es immer noch, da Second ausgewählt ist.

    
Iulian Onofrei 02.03.2017, 12:06
quelle

2 Antworten

1

Gehe einfach zu target- & gt; Schema bearbeiten - & gt; Ausführen - & gt; Info und überprüfen Sie die Build-Konfiguration. Stellen Sie jetzt beim Hinzufügen der Preprocessor-Makros in der Build-Einstellung sicher, dass Sie das Makro für die korrekte Build-Konfiguration und das richtige Ziel hinzufügen.

Ich habe es versucht, indem ich für meine Ziel-App (Test-ObjectiveC) sowohl Debug- als auch Release-Build hinzugefügt habe. Also, wenn ich unten Code mit dieser Einstellung versuchte, können Sie die Syntaxfarbe dementsprechend sehen.

    
Harish Gupta 10.03.2017 02:57
quelle
1

Wenn Sie das in Swift so machen möchten, sollten Sie eine User-Defined Einstellung namens OTHER_SWIFT_FLAGS in Ihrem Build Settings wie folgt hinzufügen:

Und dann in deinem Code tippst du:

%Vor%

Ich weiß nicht, warum Sie das brauchen, aber es könnte interessant sein, sich in das native Xcode Target zu vertiefen, um spezifisches Verhalten für mehrere Apps mit demselben Root-Projekt zu verwenden. Wenn dies das ist, was Sie wollen, sollten Sie in einen Artikel schauen: AppCoda verwendet Ziele mit XCode .

    
cdescours 15.03.2017 15:49
quelle