Sto lavorando a un progetto iOS in cui ci troviamo nella sfortunata situazione in cui alcune delle librerie che dobbiamo usare sono disponibili in due versioni. Una versione per il debug e una versione per la produzione. Non è possibile eseguire il debug con la lib di produzione. e allo stesso modo non è possibile usare la lib di debug. in produzione.progetto Xcode complesso con più file .xcconfig e cocoapods
Per risolvere questo problema sono stati impostati più obiettivi (uno per il debug e uno per la produzione) nel progetto. Questi obiettivi utilizzano file .xcconfig separati (App-Debug.xcconfig e App-Production.xcconfig) per definire: LIBRARY_SEARCH_PATHS, HEADER_SEARCH_PATHS & OTHER_LDFLAGS per ciascun target.
Questo funziona perfettamente, ma sta diventando un problema tenere traccia di tutte le dipendenze di terze parti manualmente. Quindi abbiamo deciso di iniziare a utilizzare CocoaPods per gestire alcune delle nostre dipendenze di terze parti.
Ma a causa di queste librerie "a due versioni" non è possibile utilizzare Pods.xcconfig come previsto, ma è necessario aggiungere le impostazioni da esso alle proprie App-Debug.xcconfig e App-Production.xcconfig.
Non sono sicuro del modo corretto per farlo, poiché tutto ciò che provo, sembra non essere compilato perché i miei pod non possono essere trovati.
nostro Pods.xcconfig:
ALWAYS_SEARCH_USER_PATHS = YES
HEADER_SEARCH_PATHS = ${PODS_HEADERS_SEARCH_PATHS}
LIBRARY_SEARCH_PATHS = "$(PODS_ROOT)/TestFlightSDK"
OTHER_LDFLAGS = -ObjC -lTestFlight -lz -framework SystemConfiguration -framework UIKit
PODS_BUILD_HEADERS_SEARCH_PATHS = "${PODS_ROOT}/BuildHeaders" "${PODS_ROOT}/BuildHeaders/AFNetworking" "${PODS_ROOT}/BuildHeaders/TestFlightSDK"
PODS_HEADERS_SEARCH_PATHS = ${PODS_PUBLIC_HEADERS_SEARCH_PATHS}
PODS_PUBLIC_HEADERS_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/AFNetworking" "${PODS_ROOT}/Headers/TestFlightSDK"
PODS_ROOT = ${SRCROOT}/Pods
App-Debug.xcconfig:
#include "Config-XXX.xcconfig"
#include "Config-Tesseract.xcconfig"
#include "Config-AppMeasurement.xcconfig"
#include "Config-Libxml2.xcconfig"
#include "Config-Frameworks.xcconfig"
LIBRARY_SEARCH_PATHS = $(inherited) $(XXX_LIBRARY_SEARCH_PATH_DEBUG) $(TESSERACT_LIBRARY_SEARCH_PATH) $(APPMEASUREMENT_LIBRARY_SEARCH_PATH)
HEADER_SEARCH_PATHS = $(inherited) $(TESSERACT_HEADER_SEARCH_PATH) $(LIBXML2_HEADER_SEARCH_PATH) $(XXX_HEADER_SEARCH_PATH)
OTHER_LDFLAGS = $(inherited) -lz -lxml2 -lstdc++ -all_load -ObjC -lXXXLibrary $(APPLE_FRAMEWORKS)
App-Production.xcconfig:
#include "Config-XXX.xcconfig"
#include "Config-Tesseract.xcconfig"
#include "Config-AppMeasurement.xcconfig"
#include "Config-Libxml2.xcconfig"
#include "Config-Frameworks.xcconfig"
LIBRARY_SEARCH_PATHS = $(inherited) $(XXX_LIBRARY_SEARCH_PATH_PRODUCTION) $(TESSERACT_LIBRARY_SEARCH_PATH) $(APPMEASUREMENT_LIBRARY_SEARCH_PATH)
HEADER_SEARCH_PATHS = $(inherited) $(TESSERACT_HEADER_SEARCH_PATH) $(LIBXML2_HEADER_SEARCH_PATH) $(XXX_HEADER_SEARCH_PATH)
OTHER_LDFLAGS = $(inherited) -lz -lxml2 -lstdc++ -all_load -ObjC -lXXXLibrary $(APPLE_FRAMEWORKS)
Config-XXX.xcconfig:
XXX_LIBRARY_SEARCH_PATH_DEBUG = "$(SRCROOT)/External/XXX"
XXX_LIBRARY_SEARCH_PATH_PRODUCTION = "$(SRCROOT)/External/XXX/LibProd"
XXX_HEADER_SEARCH_PATH = "$(SRCROOT)/External/XXX/headers"
Come possiamo vedere sia Pods.xcconfig che la nostra App-Debug.xcconfig imposta: LIBRARY_SEARCH_PATHS, HEADER_SEARCH_PATHS & OTHER_LDFLAGS.
Quello che mi serve è avere i valori dichiarati in Pods.xcconfig aggiunti ai valori dichiarati in App-Debug.xcconfig.
Stiamo utilizzando Xcode 4.6 e lo sviluppo per iOS 4.3.
Questo è davvero fantastico, non avevo idea che fosse possibile. Nei prossimi giorni farò un tentativo, non abbiamo ancora nessuna configurazione per gestire i pod personalizzati (ancora). – cvknage