2013-09-25 13 views
7

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?

Antwort

0

Sie können Ihren Kuchen noch haben und (teilweise) essen. Ihre Ziele xcconfig Datei kann umfassen die cocoapods ein:

#include "../Pods/Pods.xcconfig" 
MY_SETTING = YES 
... 

jedoch der Teil, den Sie noch nicht essen kann, wenn man die Flaggen bereits in Pods.xcconfig gesetzt angeben möchten. Ich kann keine Möglichkeit finden, Pfade hinzuzufügen, die Cocoapods bereits in der enthaltenen Datei festgelegt hat, z. Sie würden dies wollen:

HEADER_SEARCH_PATHS = $(HEADER_SEARCH_PATHS) MyOtherIncludes 

jedoch einfach diese Linie fällt die Header-Suchpfad Cocoapods, sollte dies nur MyOtherIncludes :-(

Eine Abhilfe zu verlassen sein MyOtherIncludes zum Projekt xcconfig Dateien zu verschieben, die Cocoapods berührt nicht.Das hat leider nicht funktioniert, YMMV

+0

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

Verwandte Themen