2009-09-09 3 views
15

मैं xcconfig फ़ाइलों के साथ एक्सकोड 3.2 का उपयोग कर रहा हूं। फ़ाइलों को लक्ष्य द्वारा व्यवस्थित किया जाता है। उदाहरण के लिए, मेरे पास debug.xcconfig फ़ाइल और release.xcconfig एक है। दोनों सामान्य सेटिंग्स का उपयोग करते हैं, इसलिए मैंने shared.xcconfig फ़ाइल जो दोनों द्वारा शामिल की गई है।एक्सकोड: एकाधिक xcconfig फ़ाइलों के साथ डीबग पर्यावरण कैसे सेट करें?

shared.xcconfig फ़ाइल इस तरह दिखता है:

GCC_C_LANGUAGE_STANDARD = c99 
GCC_WARN_ABOUT_RETURN_TYPE = YES 
GCC_WARN_UNUSED_VARIABLE = YES 
GCC_PREPROCESSOR_DEFINITIONS = SOME_COMMON_DEFINITIONS 

debug.xcconfig फ़ाइल इस तरह दिखता है:

#include "Shared.xcconfig" 
GCC_OPTIMIZATION_LEVEL = 0 

अब, मैं debug.xcconfig फ़ाइल में एक DEBUG पूर्वप्रक्रमक परिभाषा जोड़ना चाहते हैं।

GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG" 

यह Xcode 3.2 में काम नहीं करता है: जैसा कि this question में दिखाया गया है, निम्न विधि काम करने के लिए माना जाता है। एक्सकोड दस्तावेज़ भी स्पष्ट रूप से उल्लेख करते हैं कि संशोधित चर संभव नहीं है, आप केवल उन्हें ओवरराइट कर सकते हैं।

आप इस समस्या को कैसे हल करेंगे?

उत्तर

17

जिस तरह से हमने अतीत में इसका सामना किया है, यह है कि प्रत्येक परत परिभाषाओं का सबसेट बना ले, फिर उन्हें सभी को पत्ती-स्तर xcconfig पर एक साथ लाएं।

shared.xcconfig में:

GCC_PREPROCESSOR_DEFINITIONS_SHARED = qFoo qBar qBaz 

debug.xcconfig में:

GCC_PREPROCESSOR_DEFINITIONS_DEBUG = qDebug 
GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_SHARED) $(GCC_PREPROCESSOR_DEFINITIONS_DEBUG) 

(लाभ वर्बोज़ सबसेट चर बनाने के लिए है कि वे कोषगत मूल्य वे रचना के लिए उपयोग किया जाता है के समान हैं, उन्हें बनाने है कॉन्फ़िगरेशन फ़ाइल में ढूंढना आसान है।)

+0

एक अन्य समाधान है, अगर आप आसानी से xcconfig आप शामिल में चर नाम संपादित नहीं कर सकते, लक्ष्य के लिए xcconfig आप परियोजना के लिए शामिल करना चाहते हैं और आप अधिक विशिष्ट एक सेट है। यह विरासत का काम करेगा। अधिक जानकारी के लिए इस गीथब मुद्दे टिप्पणी देखें: https://github.com/CocoaPods/CocoaPods/issues/1212#issuecomment-52272400 –

-1

$ (विरासत) का उपयोग करने के बारे में कैसे?

GCC_PREPROCESSOR_DEFINITIONS = $ (विरासत में मिला है) डीबग

+2

यह अच्छा होगा अगर यह काम करता है, लेकिन दुर्भाग्य से यह .xcconfig फ़ाइलों में नहीं है। –

1

काम करना चाहिए के बाद:

xcodebuild GCC_PREPROCESSOR_DEFINITIONS='$(value) BAR=1' 
5

तुम भी एक .xcconfig फ़ाइल में निम्न स्वरूप का उपयोग कर सकते हैं। (एक्सकोड 4 में काम करता है, एक्सकोड 3 में परीक्षण नहीं किया गया है)। यह केवल एक उदाहरण है, सभी सेटिंग्स के लिए काम करता है।

ARCHS=i386 x86_64 
ARCHS[config=Debug]=i386 
ARCHS[config=Release]=i386 x86_64