2011-02-01 18 views
5

के आधार पर एक ही नाम के साथ विभिन्न शीर्षलेख फ़ाइल आयात करना मेरे पास एक से अधिक लक्ष्य वाले प्रोजेक्ट हैं जिनमें से प्रत्येक ऐप के एक बहुत ही समान संस्करण बनाता है लेकिन विभिन्न छवियों की संपत्तियों और plists के साथ। प्लेलिस्ट/छवियों के लिए जो ठीक है लेकिन मैं शेयरकिट और एपिरेटर फ्रेमवर्क का उपयोग करता हूं जिसमें उनके कॉन्फ़िगरेशन के लिए # डिफाइन के साथ हेडर फाइलें हैं। प्रत्येक संस्करण के लिए मुझे विश्वास है कि इस हेडर फ़ाइल का एक अलग संस्करण आयात करने की आवश्यकता है, क्योंकि प्रत्येक लक्ष्य द्वारा बनाए गए प्रत्येक ऐप के लिए कॉन्फ़िगर अलग है।एक्सकोड - लक्ष्य

तो लक्ष्य एक SHConfig.h है और लक्ष्य बी एक अलग SHConfig.h

है मैं स्रोत को संपादित कर सकता है इन चौखटे लक्ष्य के आधार पर अलग अलग हेडर आयात करने के लिए के लिए लेकिन जब मैं आ कि गंदा हो जाएगा ढांचे को अपग्रेड करने के लिए।

क्या लक्ष्य के आधार पर विभिन्न शीर्षलेख फ़ाइलों (समान नाम के साथ) आयात करने का कोई बेहतर तरीका है?

उत्तर

5

मान लीजिए कि वे अलग-अलग निर्देशिकाओं में हैं, सही निर्देशिका को पहले रखने के लिए प्रत्येक लक्ष्य में शीर्षलेख खोज पथ सेट करें।

आप इसे $(SRCROOT)/foo:$(HEADER_SEARCH_PATHS) जैसे कुछ सेट करना चाहते हैं, हालांकि मुझे यकीन नहीं है कि यह आवश्यक है या नहीं।

+1

दो के लिए फ़ाइलों को खोजने के लिए एक ही नाम है के लिए काम करता है, वे अलग निर्देशिका में रहना होगा। – ughoavgfhw

+1

धन्यवाद पीटर, अच्छी तरह से काम करता है। सुझाया गया एक विकल्प था कि मैं अपना खुद का "मास्टर" SHKConfig.h बनाना चाहता हूं और अन्य फ़ाइलों को पास करने के लिए #ifdefs को परिभाषित करता हूं। इसमें कम से कम ओवरहेड और बिल्ड टूल्स पर कम निर्भरता है। दोनों समाधान काम करने लगते हैं। – NeilInglis

+0

मैंने बिल्कुल ऐसा किया और यह काम नहीं करता है। मेरे पास एक लक्ष्य है जो अन्य लक्ष्य के फ़ोल्डर में शीर्षलेख की तलाश करता है। कोई विचार क्या मैं गलत कर रहा हूँ? – refaelos

0

जो मैंने पाया वह सामान्य निर्देशिका नाम हेडर खोज पथ में रखना था, और फिर एक अलग # आयात का उपयोग करना था। मेरी निर्देशिका संरचना सामान्य/दृश्य/v1 और सामान्य/दृश्य/v2 थी। मैं एक लक्ष्य के लिए v1 और दूसरे के लिए v2 चाहता था।

मेरे मामले में, खोज पथ मैं हैडर खोजें पथ में इस्तेमाल किया गया था:

$(SRCROOT)/../Common/ 

फिर, मैं प्रयोग किया है:

#import <Views/v2/ActivityIndicator.h> 

लक्ष्य है कि दूसरे संस्करण की जरूरत में (यह $ पाता है (SRCROOT) /../ आम/दृश्य/v2/ActivityIndicator.h)।

विचित्र रूप से, दूसरा लक्ष्य (मैंने बनाया पहला) पूर्ण पथ निर्दिष्ट किए बिना ठीक है। अर्थात, और

#import "ActivityIndicator.h" 

$ (SRCROOT) /../ आम/दृश्य/v1/ActivityIndicator.h

संबंधित मुद्दे