2014-03-01 10 views
7

Ich versuche, eine POD-Spezifikation für ein vorhandenes Bibliotheksprojekt zu erstellen.Associate POD Spec Attribute zu verschiedenen Build-Einstellungen von ihrer Xcode-Konfiguration (z. B. Release, Debug)

Im Xcode-Projekt definieren die Buildeinstellungen unterschiedliche Präprozessormakros für verschiedene Build-Konfigurationen (zB: "Debug" und "Release")

Zum Beispiel:

Für die "Debug" Konfiguration:

GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 

Für die "Release" Konfiguration:

GCC_PREPROCESSOR_DEFINITIONS = NDEBUG NS_BLOCK_ASSERTIONS 

Wie ordne ich diese Einstellungen der entsprechenden POD-Spezifikation zu?

Zum Beispiel:

spec.compiler_flags = '-DDEBUG=1' 

und

spec.compiler_flags = '-DNDEBUG -DNS_BLOCK_ASSERTIONS' 

Leider in der Regel die offizielle Dokumentation ist meist eher verwirrend und unklar, als wirklich hilfreich:

Build settings

Build-Einstellungen

In dieser Gruppe sind die Attribute der Konfiguration der Build-Umgebung aufgeführt wird, das verwendet werden soll, um die Bibliothek zu bauen.

Wenn nicht in einer Unterspezifikation definiert, erben die Attribute dieser Gruppe den Wert des übergeordneten Elements.

Beispiele:

'-DOS_OBJECT_USE_OBJC = 0' spec.compiler_flags = '-Wno-Format'

Intuitiv, ich würde das so etwas wie tun:

configuration :Debug do 
    spec.compiler_flags = '-DDEBUG=1' 
end 

configuration :Release do 
    spec.compiler_flags = '-DNDEBUG -DNS_BLOCK_ASSERTIONS' 
end 

jedoch , das ist raten.

+0

Ich bin auf der Suche nach der Antwort auf diese genaue Frage, haben Sie ein Update? –

Antwort

4

aktualisieren

war ich zu schnell zu dieser Lösung zu springen, und tatsächlich, diese nicht funktioniert.

Während Conditional Variable Assignment der xcconfig-Syntax einen Wert für Architektur und Plattform bedingt festlegt, funktioniert es bei der Konfiguration anders. Aufgrund dieses Unterschieds kommt diese Lösung nicht mit der xcconfig-Vererbungsmechanik von CocoaPods aus.

OP von this SO question anscheinend, und auch ich, konnte Conditional Variable Assignation nicht erfolgreich für die Konfiguration in podspec verwenden.


Mit Conditional Variable Assignment von xcconfig Syntax, können Sie es erreichen:

s.pod_target_xcconfig = { 
    'GCC_PREPROCESSOR_DEFINITIONS[config=Debug]' => '-DDEBUG=1', 
    'GCC_PREPROCESSOR_DEFINITIONS[config=Release]' => '-DNDEBUG -DNS_BLOCK_ASSERTIONS' 
} 

Dennoch gibt es einen kleinen Nebeneffekt, wie in another SO question erwähnt, wo Einstellungen resultierende bauen mehrere Male in Pod definiert werden .xcconfig irgendwie.

+0

danke, das hat meinen Tag gerettet – kubbing