Wie Anhängen von Werten in xcconfig Variablen?
Bin ich mit Xcode und .xcconfig-Dateien. Ich versuche Anhängen, einige Werte in den Präprozessor-Definitionen, aber ich kann einfach nicht damit es funktioniert.
Ich habe versucht, die folgenden (sowie viele Variationen von diesem), aber kein Glück so weit:
GCC_PREPROCESSOR_DEFINITIONS = '$(GCC_PREPROCESSOR_DEFINITIONS) NEW_VALUE'
Den NEW_VALUE
symbol ist einfach nie Hinzugefügt, um die Präprozessor-Definitionen.
Hat jemand hatte Erfolg Anhängen neuer Werte an Variablen in xcconfig Dateien?
InformationsquelleAutor der Frage Martin Cote | 2009-09-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus den erklärten Gründen in den anderen Antworten auf diese Frage, Sie kann nicht Erben die Werte einfach.
Ich empfehle definieren der Einstellungen in cascade. Nehmen wir an, die APP ist Ihr Projekt Präfix und machen diese einfache Definition nur ein paar CFLAGS:
Plattform.xcconfig:
Projekt.xcconfig:
Ziel.xcconfig:
Ziel-zwei.xcconfig:
Zusammenführen.xcconfig:
Dann werden Sie Basis jedes Ihrer Ziele build-Konfigurationen auf
target-xxx.xcconfig
. Ein echtes Projekt werden komplexere setups, eine Konfigurations-Datei für das Projekt und ein anderes für das Ziel, aber Sie bekommen die Idee.Denken Sie auch daran, dass
$(inherited)
bezieht sich auf höher Ebene in der Hierarchie, nicht früher. Zum Beispiel, es erbt von Projekt-Ebene, auf Ziel-Ebene. Nicht sicher, ob das mit Xcode 4 zu.Dies ist eine Vereinfachung GTMdorthin zu gehen, um mehr zu erfahren.
InformationsquelleAutor der Antwort djromero
Gemäß den Xcode-Build-System-Guide:
So, ich denke, das bedeutet, dass es nicht möglich ist das Anhängen von Werten an eine variable gegeben.
InformationsquelleAutor der Antwort Martin Cote
Dies funktioniert:
InformationsquelleAutor der Antwort Laxman Battini
Es ist eine andere Frage mit einer Antwort, die helfen könnte, mit dieser besonderen problem. Es beschreibt eine Technik, die jede Schicht zu Komponieren, die eine Teilmenge der Definitionen, dann bringen Sie alle zusammen auf der Blattebene xcconfig.
InformationsquelleAutor der Antwort fbrereto
Ich glaube, ich habe stolperte über einen etwas besseren Ansatz, während die versuchen, zu integrieren, die Cocoapods xcconfig Dateien in meine eigene. Ich mag, um die folgenden in meine Projekte
Leider kollidiert dies jedoch mit den Definitionen, die kommt mit den Hülsen.xcconfig. Wie nicht anderweitig vermerkt $(inherited) funktioniert nicht wie erwartet. Was funktioniert ist folgende
UPDATE:
Wenn Sie brauchen, um zu überschreiben, eine Einstellung für eine bestimmte Konfiguration dann würden Sie geneigt sein, etwas zu schreiben, wie
Leider das wird nicht funktionieren, SONDERN setzen Sie die zweite Deklaration in einer Datei, die nur zu bekommen ist, geladen von der Debug-Konfiguration wird richtig Einstellung zum überschreiben.
InformationsquelleAutor der Antwort James Moore
Wie bereits in anderen Antworten, vor Xcode 10, xcconfig Dateien konnten nicht einfach Erben und erweitern gegenseitig Ihre Werte. Aber,
Seit Xcode 10, xcconfig funktioniert nun wie könnte man erwarten, dass Sie :
$(inherited)
tatsächlich zu erweitern, um die zuvor definierte Wert der Variablen.(Xcode 10 beta 1 release notes)
So zum Beispiel, zwei einfache .xcconfig Dateien:
Vorausgesetzt, Ihr Projekt verwendet Debuggen.xcconfig für seine Debug-Konfiguration, erhalten Sie den erwarteten Wert
-DMY_GENERIC_FLAG -DMY_DEBUG_FLAG
fürOTHER_SWIFT_FLAGS
.(statt nur
-DMY_DEBUG_FLAG
in Xcode 9 und früheren Versionen)Das neue Verhalten ist ziemlich einfach:
$(inherited)
wird einfach ersetzt durch die zuvor definierten Wert der Variablen, wenn überhaupt.Also in dem vorherigen Beispiel, wenn wir erweitern die
#include
Aussage, wir erhalten die folgenden xcconfig Datei:OTHER_SWIFT_FLAGS
Wert ist-DMY_GENERIC_FLAG
($(inherited)
erweitert, um nichts, denn dies ist die erste definition vonOTHER_SWIFT_FLAGS
begegnen wir1).OTHER_SWIFT_FLAGS
wenn überschrieben, und sein Wert ist jetzt-DMY_GENERIC_FLAG -DMY_DEBUG_FLAG
(den vorherigen Wert + die neu hinzugefügten flag).Auf eine komplexere xcconfig setup, die Dinge könnten so Aussehen:
Nehmen wir an, dass wir uns diesmal mit dem Merge.xcconfig in unserer Konfiguration.
Aufgelösten Wert für
OTHER_SWIFT_FLAGS
dann-DMY_FIRST_FLAG -DMY_SECOND_FLAG -DMY_INTERMEDIATE_FLAG -DMY_LAST_FLAG
.Mag dies zunächst verwunderlich, aber es macht eigentlich Sinn: wenn die
#include
sind gelöst, wir am Ende mit dieser xcconfig:Die endgültige aufgelöst Wert ist dann definiert man auf der letzten Zeile, die ist
-DMY_LAST_FLAG
plus den Wert, den es geerbt von der vorherigen Zeile-DMY_INTERMEDIATE_FLAG
etc etc.Beachten Sie, dass natürlich, wenn Sie vergessen
$(inherited)
in eine der Definitionen, brechen Sie die Vererbungskette und bekommen nur die Werte von unten, Definitionen, die definition ohne$(inherited)
.1 kann Man erwarten, dass die xcconfig Datei zu Erben, Vorherige Werte definiert, auf der Ebene des Projekts, aber es scheint nicht der Fall zu sein
? Als Xcode-10 beta 1 scheint es, dass die build-Einstellungen-editor nicht richtig zu lösen, den richtigen Wert für die Variablen definiert, die in der xcconfig-Dateien und zeigt die Werte an, als wenn gelöst mit den alten pre-Xcode 10 Verhalten. Ich reichte rdar://40873121 in Bezug auf diese (https://openradar.appspot.com/radar?id=4925869923500032).
InformationsquelleAutor der Antwort Guillaume Algis
Dies funktioniert für mich in Xcode 2.4.1:
Müssen Sie es manchmal ein paar Sekunden zwischen editieren einer config-Datei und die änderung zeigt sich in einer Ziel-Bauen-Info.
InformationsquelleAutor der Antwort Charles Anderson
Sie möchten, verwenden Sie den Platzhalter $(inherited) für die Darstellung des Wertes geerbt, von den unteren Ebenen, z.B.
InformationsquelleAutor der Antwort cdespinosa