2012-04-12 13 views
13

में मौजूदा (सी ++) कोडबेस को संकलित, संकलित और लिंक करने के लिए एक्सकोड प्राप्त करना मैं अपने एक्सकोड आईओएस प्रोजेक्ट में अपने मौजूदा सी ++ कोडबेस को 'आयात' करने की कोशिश कर रहा हूं।एक्सकोड 4.3 (.1)

समस्या यह है कि, xCode संकलित नहीं करेगा (और इसलिए लिंक नहीं) मेरे कोड। यह मैंने अभी तक किया है:

  • फ़ाइल> "प्रोजेक्ट" में फ़ाइलें जोड़ें। मैं 'कॉपी फाइल' पर टिक नहीं लगाता क्योंकि यह एकाधिक प्लेटफ़ॉर्म के लिए साझा कोडबेस है और स्रोत कोड की कई प्रतियां एक विकल्प नहीं है।
  • मैंने "शीर्षलेख खोज पथ" परियोजना सेटिंग्स के लिए उचित पथ जोड़ा है। हेडर फाइलों को शामिल करने में, मैं अपने उद्देश्य-सी ++ (। मिमी) फ़ाइल से # stuff.h "शामिल कर सकता हूं।

हालांकि, मुझे वास्तव में .cpp फ़ाइलों को संकलित करने के लिए XCode को बताने का कोई तरीका नहीं मिल रहा है?

कुछ अंक:

  • मैं एक तरह से पूर्व यह संकलित करने के लिए एक पुस्तकालय में के लिए नहीं देख रहा हूँ और इस तरह
  • परियोजना को जोड़ने के लिए एक मानक आईओएस ऑब्जेक्टिव-सी परियोजना है। सी ++ कोड से कहा जाता है (कि एक समस्या नहीं है)

अद्यतन

मैं लक्ष्य के "संकलित सूत्रों का कहना है" के लिए codebase निर्देशिका जोड़ दिया है। मुझे वास्तव में पॉप अप करने वाले संवाद में "अन्य जोड़ें ..." पर क्लिक करना होगा, क्योंकि मैं अपने कोडबेस के निर्देशिका संदर्भ का चयन नहीं कर सकता।

जब मैं इसे जोड़ता हूं, तो एक्सकोड मुझसे पूछता है कि क्या मैं "बाहरी निर्माण प्रणाली प्रोजेक्ट बनाना चाहता हूं"। मैं इसे छेड़छाड़ करता हूं और दो फ़ील्ड्स को डिफ़ॉल्ट मान "/ usr/bin/make" और "$ (ACTION)" के साथ छोड़ देता हूं। हालांकि, मेरे कोडबेस को निर्माण के दौरान संकलित नहीं किया जाता है। क्या मुझे अपना खुद का मेकफ़ाइल लिखना है?

अगर मैं चयन नहीं करते हैं तो एक निर्देशिका संदर्भ लक्ष्य के तहत बनाई गई है "बाहरी निर्माण प्रणाली परियोजना बनाएँ", लेकिन निर्माण के दौरान संकलित नहीं और एक चेतावनी उत्सर्जित होता है:

warning: no rule to process file '$(PROJECT_DIR)/../codebase' 
of type folder for architecture i386 

उत्तर

18

यहां तक ​​कि अगर आप डॉन की जांच करें को कॉपी करें परियोजना में फ़ाइलों को जोड़ने के दौरान लक्ष्य में जोड़ें।

enter image description here

आप, आप लक्ष्य का चयन कर सकते करने के लिए भूल गए हैं, के चरण का निर्माण टैब के पास जाकर संकलित सूत्रों का कहना है में फ़ाइलें जोड़ने। के लिए बनाएं समूह:

enter image description here

+0

लक्ष्य (केवल एक ही) लक्ष्य में जोड़ें के तहत चेक किया गया है। – olafure

+0

क्या आपके पास अपनी सीपीपी फाइलें ** संकलित स्रोत ** में सूचीबद्ध हैं? यदि आपने उन्हें जोड़ने की कोशिश नहीं की है? – sch

+4

हम वहां जा रहे हैं :) यदि मैं एक एकल .cpp फ़ाइल जोड़ता हूं, तो इसे निर्माण में शामिल किया जाता है! हालांकि, अगर मैं पूरी निर्देशिका का चयन करता हूं (मेरा अद्यतन प्रश्न देखें), कुछ भी नहीं बनाया जाता है। मैं अपने सभी gazillion .cpp फ़ाइलों को मैन्युअल रूप से नहीं चुनूंगा (पथ शामिल होंगे गलत होगा और भविष्य में फ़ाइलों को मैन्युअल रूप से जोड़ने/निकालने के लिए एक जोड़ा नरक) – olafure

8

आप अपने लक्ष्य पर जाएँ -> का चयन करें -> चरण का निर्माण -> संकलित स्रोत -> "+" -> "दूसरों को जोड़े" -> (अपने बाहरी स्रोत फ़ोल्डर का चयन करें) कोई जोड़ा फ़ोल्डर्स -> अनचेक: आइटम को गंतव्य में कॉपी करें।

अब आपका फ़ोल्डर एक्सकोड में होगा, संरचना की नकल करेगा। यदि आप XCode में उस फ़ोल्डर में स्रोत फ़ाइलों को जोड़ते हैं तो स्रोत फ़ाइलों को आपकी बाहरी स्रोत निर्देशिका में जोड़ा जाएगा ठीक है।तो एकाधिक आईडीई का उपयोग करने और स्रोत लिंकेज को प्रबंधित करने में आसानी हल हो जाती है।

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

+5

आईओएस डेवलपर्स द्वारा इसे एक व्यवहार्य विकल्प माना जाता है, यह मेरे दिमाग को उड़ाता है। यह ठीक है अगर आपके पास दो फाइलें हैं लेकिन सैकड़ों होने पर हास्यास्पद है। मुझे विश्वास नहीं है कि इस मुद्दे को एक्सकोड 8 के रूप में संबोधित नहीं किया गया है। – enl8enmentnow

+0

बस "ड्रैग और ड्रॉप" देखकर मेरे दिमाग को उड़ा दिया जाता है। यह .pbxproj फ़ाइल मेरे दिमाग को उड़ाती है, इसका प्रारूप इतना बेवकूफ है। कई लक्ष्यों पर एकाधिक डेवलपर्स के साथ काम करना इस पूरे प्रक्रिया को उन सभी संदर्भों से तोड़ देता है। उदाहरण के लिए यदि आप पुल अनुरोध विलय करने से पहले अपने प्रोजेक्ट में कोई लक्ष्य जोड़ते हैं, तो आपका नया लक्ष्य उन नई "स्रोत फ़ाइलों" से जुड़ा नहीं होगा जो आप विलय करते हैं ... अब गायब लोगों को ढूंढें। सबसे खराब आईडीई, और मैंने कई का उपयोग किया है। – koxon

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