2013-02-15 34 views
10

ठीक है, मैंने जो कोशिश की है वह ठीक है।दो लक्ष्य, एक ही नाम के साथ दो शीर्षलेख फ़ाइलें सही लक्ष्य के लिए प्रत्येक शीर्षलेख का उपयोग कैसे करें?

मेरे पास दो अलग-अलग निर्देशिका IRL में हेडर फ़ाइलें हैं I उनका नाम वही है, लेकिन दो अलग-अलग स्थानों में हैं।

मैं केवल प्रत्येक लक्ष्य के लिए प्रासंगिक शीर्षलेख फ़ाइल शामिल करना चाहता हूं। आइए व्याख्या की आसानी के लिए कहें कि हेडर फ़ाइल को "Config.h" कहा जाता है।

तो मेरे पास है:

$ {PRODUCT_DIR} /Header1/Config.h

और

$ {PRODUCT_DIR} /Header2/Config.h

ये फ़ाइलें एक्सकोड के एलएचएस में और साथ ही दो अलग-अलग समूहों में दिखाई देती हैं (हेड आर 1 और हेडर 2 जो आईआरएल फ़ोल्डरों को इंगित करते हैं)।

तो अब मुझे बस इतना करना है कि प्रत्येक लक्ष्य के लिए एक्सकोड सही फ़ोल्डर से सही चुनें।

Target1

और

target2

मैं प्रत्येक लक्ष्य के लिए User Header Search Paths के लिए पथ को जोड़ने की कोशिश की है, लेकिन इसकी अभी भी गलत एक को चुनने। मैंने "हमेशा उपयोगकर्ता पथ खोजें" को टॉगलिंग करने का भी प्रयास किया है, जो कि प्रभाव नहीं लग रहा है।

तो मेरा सवाल यह है, क्योंकि यह परियोजना निर्देशिका में है? या ऐसा इसलिए है क्योंकि वे एलएचएस पर फ़ाइल मैनेजर में एक्सकोड में हैं, इसलिए एक्सकोड उन्हें बिल्ड फ़ोल्डर में कॉपी कर रहा है?

अजीब बात यह अंतिम नाम वर्णानुक्रम के साथ फ़ोल्डर से हेडर फाइल को चुनने किया जा रहा है है ...

Xcode के पिछले संस्करणों में मुझे यकीन है कि आप जो हेडर निर्माण में कॉपी करने के लिए चुन सकते हैं कर रहा हूँ फ़ोल्डर।

वैसे भी .. क्या कोई जानता है कि मैं इसे कैसे ठीक कर सकता हूं ताकि मैं लक्ष्य के लिए उचित हेडर फ़ाइल का चयन कर सकूं?

बहुत धन्यवाद।

+0

मुझे यकीन नहीं है लेकिन सशर्त आयात के बारे में क्या? –

+0

यह बैक अप प्लान है। :) लेकिन यह इस तरह से एक लोड अधिक कदम जोड़ देगा। मुझे यकीन है कि यह संभव होना चाहिए। –

+0

1. दरअसल मैं समझ नहीं पा रहा हूं कि आपको "शीर्षलेख खोज पथ" के साथ समस्या क्यों है। प्रोजेक्ट से इन हेडर को बाहर करने का प्रयास करें और "**" रिकर्सिव खोज पथ का उपयोग न करें। 2. आमतौर पर मैं "ifdef else" के साथ अलग "शामिल" का उपयोग करता हूं। तो आप किसी भी लक्ष्य को किसी भी लक्ष्य में जोड़ सकते हैं और यह जांच कर सकते हैं कि आपको क्या शामिल करना है (उदा: "ifdef target1 #include" header1.h "और # शामिल करें" header2.h "endif;)। तो यह आपकी आवश्यकताओं पर निर्भर करता है। – Jlexyc

उत्तर

8

समस्या मैं हो रही थी 2 गुना था:

  1. आप परियोजना से हेडर फाइल को दूर करने की जरूरत है। यदि वे एक्सकोड में हैं, तो फ़ाइल मैनेजर में, तो वे स्वचालित रूप से प्रोजेक्ट में शामिल हो जाएंगे।

  2. आपको "उपयोगकर्ता शीर्षलेख खोज पथ" में अपने फ़ोल्डरों के सापेक्ष पथों का उपयोग करने की आवश्यकता है। मैं ${PROJECT_DIR}/path/to/header/folder का उपयोग कर रहा था जिसने सही रास्ता दिया, लेकिन ठीक से काम नहीं कर रहा था।./path/to/header/folder पर प्रविष्टि को बदलने के बजाय ठीक काम किया।

    Always Search user Paths 
    

    हाँ करने के लिए एक सब था:

+0

क्या होगा यदि मैं प्रोजेक्ट से हेडर को नहीं हटा सकता क्योंकि मैं ढांचा बना रहा हूं और वे सार्वजनिक हेडर हैं? –

0

मैं 1 proyect और 40 से अधिक शीर्ष लेख, XCode 8 में सबसे अच्छा समाधान मुझे लगता है कि सबसे अच्छा समाधान निम्नलिखित टैग बदल रहा है में 4 लक्ष्य मेरे लिए ठीक है: enter image description here