Xcode

2010-08-06 15 views
48

को जोड़ना प्रणाली हैडर खोज पथ (संदर्भ उद्देश्य के लिए इस प्रश्न पोस्ट, मैं तुरंत जवाब देंगे)Xcode

कैसे Xcode करने के लिए शीर्ष लेख खोज पथ को जोड़ने के लिए? खासकर जब इस वाक्य के साथ सहित:

include <myheader.h> 
  1. प्रणाली हेडर की तरह सभी परियोजनाओं के लिए विश्व स्तर पर पथ जोड़ना।
  2. केवल एक विशिष्ट परियोजना के लिए पथ जोड़ना।

उत्तर

94

हमारे पास दो विकल्प हैं।

  1. एक्सकोड की वरीयता में प्राथमिकताएं-> स्थान -> "स्रोत पेड़" देखें। यहां जोड़ा गया पथ एक सिस्टम-स्तरीय पथ होगा और सभी परियोजनाओं के लिए शामिल होने के लिए उपलब्ध होगा।

  2. प्रोजेक्ट जानकारी पर बिल्ड सेटिंग्स में HEADER_SEARCH_PATHS पैरामीटर सेट करें। मैंने बिना रिकर्सन के "${SRCROOT}" जोड़े। यह सेटिंग ज्यादातर परियोजनाओं के लिए अच्छी तरह से काम करती है।

2 विकल्प के बारे में:

Xcode बजना जो जीसीसी संगत आदेश सेट का उपयोग करता है। GCC has an option -Idir जो सिस्टम हेडर खोज पथ जोड़ता है। और यह विकल्प Xcode प्रोजेक्ट बिल्ड सेटिंग में HEADER_SEARCH_PATHS के माध्यम से सुलभ है।

हालांकि, इस सेटिंग में जोड़े गए पथ स्ट्रिंग में किसी भी व्हाइटस्पेस वर्ण नहीं होने चाहिए क्योंकि विकल्प शेल कमांड को पास किया जाएगा।

लेकिन, कुछ ओएस एक्स उपयोगकर्ता (मेरे जैसे) अपनी परियोजनाओं को व्हाइटस्पेस सहित पथ पर डाल सकते हैं जो से बच जाना चाहिए। यदि आप इसे मैन्युअल रूप से इनपुट करते हैं तो आप इसे /Users/my/work/a\ project\ with\ space से बच सकते हैं। आप "${SRCROOT}" जैसे पर्यावरण चर का उपयोग करने के लिए उद्धरणों से भी बच सकते हैं।

या वर्तमान निर्देशिका को इंगित करने के लिए बस . का उपयोग करें। मैंने वेबकिट के स्रोत कोड पर यह चाल देखी, लेकिन मुझे यकीन नहीं है कि मौजूदा निर्देशिका को इसे बनाने के दौरान प्रोजेक्ट निर्देशिका में सेट किया जाएगा।

${SRCROOT} एक्सकोड द्वारा पूर्वनिर्धारित मान है। इसका मतलब स्रोत निर्देशिका है। आप Reference document में और अधिक मूल्य पा सकते हैं।

पीएस। असल में आपको ब्रेसिज़ {} का उपयोग करने की आवश्यकता नहीं है। मुझे $SRCROOT के साथ एक ही परिणाम मिलता है। यदि आप अंतर जानते हैं, तो कृपया मुझे बताएं।

+1

ध्यान दें कि $ {SRCROOT} निर्देशिका है जिसमें .xcodeproj निर्देशिका है, * नहीं * निर्देशिका जहां एक्सकोड आपकी स्रोत फ़ाइलों को रखता है (कम से कम मेरे एक्सकोड 4.6.3 पर)। मेरे स्रोत पर जाने के लिए, मुझे एक स्तर गहरा जाना पड़ा। –

+3

ब्रेसिज़ के साथ या बिना अंतर, यह है कि ब्रेसिज़ के साथ पथ में सफेद स्थान हो सकता है। –

+2

आपको बैकस्लाश ट्रिक –

2

पूर्णता के लिए उद्धरणों का उपयोग करने के लिए।

"/Users/my/work/a project with space"/**

तो पुनरावर्ती नहीं, हटाने /**

+4

इसके अलावा, गोल विविधता के बजाए ऊपर दिखाए गए चर के लिए घुंघराले ब्रैकेट का उपयोग करना सुनिश्चित करें। उत्तरार्द्ध उन परियोजनाओं के साथ मुद्दों को पार्स करने का कारण बनता है जिनमें रिक्त स्थान हैं। –

10

स्तरीय सेटिंग परियोजना से संबंधित Eonil का जवाब करने के लिए का पालन करें। चयनित लक्ष्य और बिल्ड सेटिंग्स टैब चयनित के साथ, शीर्षलेख खोज पथ के लिए खोज पथ के तहत कोई लिस्टिंग नहीं हो सकती है। इस मामले में, आप खोज बार में "मूल" से "सभी" में बदल सकते हैं और शीर्ष पथ खोज पथ खोज पथ अनुभाग में दिखाई देंगे।

3

हालांकि इस प्रश्न का उत्तर है, लेकिन जब मुझे एक ही समस्या थी तो मैंने इसे अलग-अलग हल किया। जब मैंने फ़ोल्डर्स को Create Folder references विकल्प के साथ कॉपी किया था तो मुझे यह समस्या थी; तो build_path में फ़ोल्डर जोड़ने का उपरोक्त समाधान काम करता है। लेकिन जब फ़ोल्डर को Create groups for any added folder विकल्प का उपयोग करके जोड़ा गया था, तो शीर्षलेख स्वचालित रूप से उठाए गए थे।

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