unable support pods open included files debug app ios xcode cocoapods

ios - support - Proyecto complejo de Xcode con mĂșltiples archivos.xcconfig y cocoapods



unable to open file in target in project in target (2)

Estoy trabajando en un proyecto de iOS en el que estamos en la desafortunada situación de que algunas de las bibliotecas que debemos usar se presentan en dos versiones. Una versión para depuración, y una versión para producción. No es posible depurar con la producción lib. y tampoco es posible utilizar el debug lib. en producción.

Para resolver este problema, hemos configurado varios objetivos (uno para la depuración y otro para la producción) en el proyecto. Estos destinos utilizan archivos .xcconfig separados (App-Debug.xcconfig y App-Production.xcconfig) para definir: LIBRARY_SEARCH_PATHS, HEADER_SEARCH_PATHS & OTHER_LDFLAGS para cada objetivo.

Todo esto funciona muy bien, pero es un dolor mantener un seguimiento de todas nuestras dependencias de terceros de forma manual. Por lo tanto, decidimos comenzar a utilizar CocoaPods para administrar algunas de nuestras dependencias de terceros.

Pero debido a estas bibliotecas de "dos versiones" no podemos usar el Pods.xcconfig como se esperaba, pero necesitamos adjuntar la configuración de este a nuestro propio App-Debug.xcconfig y App-Production.xcconfig.

No estoy seguro de la forma correcta de hacerlo, ya que todo lo que intento no parece compilar porque no se pueden encontrar mis pods.

Nuestras 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"

Como podemos ver, tanto el Pods.xcconfig como nuestro propio App-Debug.xcconfig configuran: LIBRARY_SEARCH_PATHS, HEADER_SEARCH_PATHS & OTHER_LDFLAGS.

Lo que necesito es tener los valores declarados en Pods.xcconfig anexados a los valores que declaramos en App-Debug.xcconfig.

Estamos usando Xcode 4.6 y compilando para iOS 4.3.


En lugar de usar dos objetivos, intente definir diferentes valores para XXX_LIBRARY_PATH en la configuración (lo más fácil en la GUI, lamentablemente). Si solo tiene dos configuraciones y se nombran apropiadamente, incluso puede hacer algo como XXX_LIBRARY_PATH = FooPath/$(CONFIGURATION) .

No es posible que una configuración de destino agregue propiedades a otra; la "herencia" es estrictamente SDK → Proyecto [Configuración] → Destino [Configuración].


Tu podfile puede soportar esto. Deberías terminar con algo como esto.

platform :ios, "5.0" link_with [''App'', ''App-Debug''] pod ''Shared-Pod'' target :App, :exclusive => true do pod ''Normal-Pod'' end target :App-Debug, :exclusive => true do pod ''Debug-Pod'' end

Esto generará dos archivos xcconfig, uno para cada objetivo.