Ist es möglich, ein Symbol für die bedingte Kompilierung festzulegen, indem Eigenschaften in einem Xcode-Projekt eingerichtet werden?
Mein Ziel ist es, ein Symbol zu erstellen, das für alle Dateien verfügbar ist, ohne import / include verwenden zu müssen, damit eine Reihe allgemeiner Klassen in einigen Projekten ein besonderes Verhalten aufweisen kann. Wie das Folgende, aber mit meinen eigenen Symbolen.
#if TARGET_IPHONE_SIMULATOR
...
#endif
objective-c
xcode
c-preprocessor
Steph Thirion
quelle
quelle
Antworten:
Gehen Sie zu Ihren Ziel- oder Projekteinstellungen, klicken Sie unten links auf das Zahnradsymbol und wählen Sie "Benutzerdefinierte Einstellungen hinzufügen". Der neue Einstellungsname sollte lauten
GCC_PREPROCESSOR_DEFINITIONS
, und Sie können Ihre Definitionen in das rechte Feld eingeben.Laut Stephs Kommentaren lautet die vollständige Syntax:
Beachten Sie, dass Sie die '=' nicht benötigen , wenn Sie nur ein Symbol # definieren möchten, anstatt ihm einen Wert zu geben (für
#ifdef
Anweisungen).quelle
Sie müssen keine benutzerdefinierte Einstellung erstellen. Die eingebaute Einstellung "Präprozessor-Makros" funktioniert einwandfrei. Alternativtext http://idisk.mac.com/cdespinosa/Public/Picture%204.png
Wenn Sie mehrere Ziele oder Projekte haben, die dieselbe Präfixdatei verwenden, verwenden Sie stattdessen Präprozessor-Makros, die nicht in vorkompilierten Headern verwendet werden, damit Unterschiede in Ihrer Makrodefinition keinen unnötigen zusätzlichen Satz vorkompilierter Header auslösen.
quelle
Wenn Sie diese Technik verwenden, um Zeichenfolgen in Ihrem Ziel zu definieren, musste ich sie wie folgt definieren und verwenden:
In den Build-Einstellungen -> Präprozessor-Makros und Ja sind Backslashes in der Definition von entscheidender Bedeutung:
Und im Quellcode:
quelle
Mit der
*_Prefix.pch
Datei können Sie projektweite Makros deklarieren. Diese Datei befindet sich normalerweise in Ihrer Gruppe Andere Quellen .quelle
Es ist unter "GCC 4.2 Preprocessing" (oder setzen Sie einfach "prepro" in das Suchfeld) ...
... aber für mein Leben kann ich es nicht zum Laufen bringen.
Ich habe meine Standard-Debug- und Release-Konfigurationen und möchte DEBUG = 1 in der Debugging-Konfiguration definieren. Aber nachdem Sie es als Wert hinzugefügt haben:
(im Einstellungsfenster)> Präprozessor-Makros: DEBUG = 1
... druckt nie / wird gerufen. Es macht mich verrückt...
quelle
#if DEBUG
auf jeden FallAls Antwort auf den Kommentar von Kevin Laity (siehe Antwort von cdespinosa) zum Abschnitt "GCC-Vorverarbeitung", der in Ihren Build-Einstellungen nicht angezeigt wird, machen Sie das Active SDK zu dem Abschnitt, der danach (Base SDK) anzeigt, und dieser Abschnitt wird angezeigt. Sie können dies tun, indem Sie das Menü Projekt> Aktives Ziel festlegen> XXX (Basis-SDK) wählen. In verschiedenen Versionen von XCode (Basis-SDK) kann es sein, dass sie unterschiedlich sind, z. B. (Projekteinstellung oder Projektstandard).
Nachdem dieser Abschnitt angezeigt wurde, können Sie Ihre Definitionen zu Prozessormakros hinzufügen, anstatt eine benutzerdefinierte Einstellung zu erstellen.
quelle
Für Xcode 9.4.1 und C ++ Projekt. Hinzufügen von
const char*
Präprozessor-Makros zu Debug- und Release- Builds.Wählen Sie Ihr Projekt aus
Wählen Sie Build Settings
Suche nach " Präprozessor-Makros "
Interaktive Liste öffnen
Fügen Sie Ihre Makros hinzu und vergessen Sie nicht, sich dem Angebot zu entziehen
Verwendung im Quellcode als üblich
const char*
quelle
Sie können das Ziel mit dem Vorverarbeitungsabschnitt duplizieren, es in einen beliebigen Namen umbenennen und dann Ihren Präprozessor-Makrowert ändern.
quelle