Ich versuche, ein Swift-Makro zu erstellen, das das Attribut @available(*, veraltet) allen Eigenschaften einer Struktur bedingt hinzufügt, wenn das Makro angewendet wird. Ich möchte dieses Verhalten global mithilfe eines benutzerdefinierten Flags zur Kompilierungszeit steuern, sodass ich zur Build-Zeit in meinem Projekt zwischen dem Anzeigen und Ausblenden der @available-Annotation umschalten kann.
Das würde ich gerne tun Übergeben Sie ein Flag zur Kompilierungszeit global im Projekt und lassen Sie es das Verhalten des Swift-Makros bedingt beeinflussen.
Beispiel:
Ich möchte das Makro wie folgt verwenden:
Code: Select all
@MyMacro()
struct X {
var a: String
var b: Int
}
Und je nachdem, ob ein globales Flag zur Kompilierungszeit gesetzt ist, sollte das Ergebnis entweder so aussehen:
Code: Select all
struct X {
@available(*, deprecated) var a: String
@available(*, deprecated) var b: Int
}
Mit aktiviertem Flag
Code: Select all
struct X {
@available(*, deprecated) var a: String
@available(*, deprecated) var b: Int
}
Mit deaktivierter Flagge:
Code: Select all
struct X {
var a: String
var b: Int
}