我正在研究一個iOS項目,我們處於不幸的情況,即我們必須使用的一些庫有兩個版本。一個用於調試的版本和一個用於生產的版本。 無法使用生產庫進行調試。同樣也不可能使用調試庫。在生產中。具有多個.xcconfig文件和cocoapods的複雜Xcode項目
爲了解決這個問題,我們在項目中設置了多個目標(一個用於調試,一個用於生產)。這些目標使用單獨的.xcconfig文件(App-Debug.xcconfig和App-Production.xcconfig)爲每個目標定義:LIBRARY_SEARCH_PATHS,HEADER_SEARCH_PATHS & OTHER_LDFLAGS。
這一切都工作得很好,但手動追蹤我們所有的第三方依賴關係是一種痛苦。因此我們決定開始使用CocoaPods來管理我們的一些第三方依賴項。
但是,由於這些「兩個版本」庫,我們無法按預期使用Pods.xcconfig,但需要將設置從它附加到我們自己的App-Debug.xcconfig和App-Production.xcconfig。
我不知道正確的方法做到這一點,因爲我嘗試的所有東西似乎都沒有編譯,因爲找不到我的豆莢。
我們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)
配置-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中聲明的值中。
我們使用Xcode 4.6併爲iOS 4.3構建。
這真的很棒,我不知道這是可能的。 在接下來的幾天裏,我會試一試 - 我們沒有設置來處理自定義的豆莢(還)。 – cvknage 2013-03-07 06:25:19