Ich habe ein Projekt mit mehreren Zielen. Es gibt eine xcconfig-Datei, die dem Projekt zugeordnet ist, und mehrere xcconfig-Dateien, die den Zielen zugeordnet sind.CocoaPods Pods.xcconfig Konflikte mit bestehenden
Jetzt möchte ich eine Drittanbieter-Bibliothek über CocoaPods einbinden. Nach $ pod install
schraubte CocoaPods das ursprüngliche Projekt, da es seine eigene xcconfig-Datei Pds.xcconfig
dem Ziel des ursprünglichen Projekts zuordnet. Dies ignoriert und überschreibt vollständig die Einstellungen, die in der ursprünglichen xcconfig-Datei definiert wurden, die dem Projekt zugeordnet ist, und löschte die ursprüngliche xcconfig-Datei aus, die den Zieldateien zugeordnet ist. Daher endete das Projekt geschraubt.
Zum Beispiel definiert Cocoapods folgend in seinem Pods.xcconfig
, die jedes Ziel zugeordnet wird:
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
Ich habe verschiedene Konfigurationen für jede Konfiguration, beispielsweise für Debug Der Konfigurationsdatei osx.debug.xcconfig
definiert
GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 DEBUG_LOG=2 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0
Was ist ein vernünftiger und praktikabler Ansatz, um solche Konflikte zu lösen?
Edit:
Ich habe durch die CocoaPods Problemliste auf GitHub gesucht. Es scheint eine große Anzahl von Problemen im Zusammenhang mit xcconfig-Dateien zu geben, von denen einige älter als 2 Jahre sind. Sie werden diskutiert und dann geschlossen, aber - wie mir einfällt - das Problem ist noch nicht gelöst.
IMHO, das ist ein grundlegendes und ein grundlegendes Problem: Es gibt ein Projekt, das xcconfig-Dateien verwendet. Dann möchte man eine Drittanbieter-Bibliothek über CocoaPods einbinden. Nach der Ausführung von pod install
ist das Projekt vermasselt.
Also, was ist los?
Leider sind die Build-Einstellungen, die nicht erweitert oder geändert werden können, die wesentlichen: GCC_PREPROCESSOR_DEFINITIONS, HEADER_SEARCH_PATHS, OTHER_CFLAGS und OTHER_LDFLAGS.Der Schuldige könnte auch Xcode sein da die Datei xcconfig mit solchen Deklarationen nicht umgehen kann: 'HEADER_SEARCH_PATHS = $ (HEADER _SEARCH_PATHS) MyOtherIncludes'. Um diese Arbeit zu machen, würde wahrscheinlich das aktuelle Verhalten brechen, wie die xcconfig-Dateieinstellungen von Xcode die zugrunde liegenden Build-Einstellungen modifizieren. – CouchDeveloper