2013-09-25 21 views
7

Ho un progetto con diversi obiettivi. C'è un file xcconfig associato al progetto e diversi file xcconfig associati alle destinazioni.Il pods.xcconfig di CocoaPods è in conflitto con quelli esistenti

Ora voglio incorporare una libreria di terze parti tramite CocoaPods. Dopo $ pod install CocoaPods ha avvitato il progetto originale poiché associa il proprio file xcconfig Pds.xcconfig alla destinazione del progetto originale. Questo ignora completamente e sovrascrive le impostazioni definite nel xcconfig originale associato al progetto e ha disattivato il file xcconfig originale associato al/i bersaglio/i. Quindi, il progetto è finito svitato.

Ad esempio, Cocoapods definisce quanto segue nella sua Pods.xcconfig che è associato a ciascuna porta:

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1

Ho configurazioni diverse per ogni configurazione, ad esempio per debug il file di configurazione osx.debug.xcconfig definisce

GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 DEBUG_LOG=2 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0

Qual è un approccio ragionevole e praticabile per risolvere tali conflitti?

Edit:

Ho cercato attraverso la lista problemi CocoaPods su GitHub. Sembra esserci un gran numero di problemi relativi ai file xcconfig, alcuni dei quali hanno più di 2 anni. Sono discussi e poi chiusi, ma - come mi è venuto in mente - il problema non è ancora stato risolto.

IMHO, questo è un problema fondamentale e di base: esiste un progetto che utilizza i file xcconfig. Quindi, si desidera includere una libreria di terze parti tramite CocoaPods. Dopo aver eseguito pod install, il progetto è rovinato.

Quindi, che succede?

risposta

0

Puoi ancora avere la tua torta e (in parte) mangiarla. file di xcconfig vostri obiettivi può includere le cocoapods uno:

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

Tuttavia, la parte non è ancora possibile mangiare è quando si desidera specificare i flag già impostati in Pods.xcconfig. Non riesco a trovare un modo per aggiungere ai percorsi che Cocoapods ha già impostato nel file incluso, ad es. che ci si vuole questo:

HEADER_SEARCH_PATHS = $(HEADER_SEARCH_PATHS) MyOtherIncludes 

Tuttavia questa linea gocce semplicemente il percorso di ricerca Cocoapods intestazione, lasciando solo MyOtherIncludes :-(

Una soluzione per questo dovrebbe essere quello di spostare MyOtherIncludes ai file xcconfig del progetto, che Cocoapods non si tocca. Purtroppo questo non ha funzionato per me, YMMV.

+0

Sfortunatamente, le impostazioni di build che non possono essere estese o modificate sono essenziali: GCC_PREPROCESSOR_DEFINITIONS, HEADER_SEARCH_PATHS, OTHER_CFLAGS e OTHER_LDFLAGS. Il colpevole potrebbe essere anche Xcode poiché il file xcconfig non può gestire tali dichiarazioni: 'HEADER_SEARCH_PATHS = $ (HEADER _SEARCH_PATHS) MyOtherIncludes'. Per fare in modo che quel lavoro interrompa il comportamento corrente, le impostazioni del file xcconfig di Xcode modificano le impostazioni di costruzione sottostanti. – CouchDeveloper

Problemi correlati