我正在做一个iOS项目,不幸的是,我们必须使用的一些库有两个版本。一个版本用于调试,另一个版本用于生产。无法使用生产库进行调试。并且同样不可能使用调试库。在生产中。
为了解决这个问题,我们在项目中设置了多个目标(一个用于调试,另一个用于生产)。这些目标使用单独的.xcconfig文件(App-Debug.xcconfig和App-Production.xcconfig)为每个目标定义: LIBRARY_SEARCH_PATHS、HEADER_SEARCH_PATHS和OTHER_LDFLAGS。
这一切都很好用,但手动跟踪我们所有的第三方依赖项变得越来越痛苦。因此,我们决定开始使用CocoaPods来管理我们的一些第三方依赖。
但是由于这“两个版本”的库,我们不能像预期的那样使用Pods.xcconfig,但需要将其中的设置附加到我们自己的App-Debug.xcconfig和App-Production.xcconfig中。
我不确定这样做的正确方式,因为我尝试的所有东西似乎都不能编译,因为找不到我的pod。
我们的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}/PodsApp-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"正如我们可以看到的那样,Pods.xcconfig和我们自己的App-Debug.xcconfig都设置了: LIBRARY_SEARCH_PATHS,HEADER_SEARCH_PATHS和OTHER_LDFLAGS。
我需要的是将Pods.xcconfig中声明的值附加到我们在App-Debug.xcconfig中声明的值。
我们使用的是Xcode4.6,并为iOS 4.3构建。
发布于 2013-03-07 09:52:06
您的podfile可以支持这一点。你应该会得到类似这样的结果
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这将生成两个xcconfig文件,每个目标一个。
发布于 2013-03-07 11:55:35
尝试在配置中为XXX_LIBRARY_PATH定义不同的值,而不是使用两个目标(遗憾的是,在图形用户界面中是最简单的)。如果您只有两个配置,并且它们的名称都是适当的,那么您甚至可以执行类似XXX_LIBRARY_PATH = FooPath/$(CONFIGURATION)的操作。
一个目标配置不可能将属性附加到另一个目标配置;“继承”是严格意义上的SDK→ProjectConfig TargetConfig。
https://stackoverflow.com/questions/15258343
复制相似问题