2009-11-15 11 views
7

मेरा ग्राहक मुझे दो प्रीकंपील्ड लाइब्रेरी, ब्लहा-डिवाइस.ए और ब्लहा-सिम्युलेटर.ए प्रदान कर रहा है। मैं डिवाइस संकलन मोड और सिम्युलेटर संकलन मोड में सिम्युलेटर में blah-device.a का उपयोग करने के लिए xcode कैसे कहूं?आईफोन के लिए एक्सकोड में विभिन्न बिल्ड प्रोफाइल के लिए विभिन्न प्रीकंपिल्ड लाइब्रेरी को कैसे लिंक करें?

मेरे क्लाइंट मुझे इन निर्देशों का

  1. ओपन लक्ष्य समूह (समूह & फ़ाइलें पैनल में), परियोजना आइकन पर राइट-क्लिक करें, फिर जोड़ें> देता है मौजूदा फ्रेमवर्क।
  2. लिंक्ड लाइब्रेरी अनुभाग में, जोड़ें पुस्तकालय आइकन (+) आइकन, पर क्लिक करें और फिर अन्य जोड़ें पर क्लिक करें।
  3. या तो blah-device.a (सीधे आईफोन डिवाइस पर विकसित करने के लिए) या blah-simulator.a ( आईफोन सिम्युलेटर पर विकसित करने के लिए) का चयन करें, फिर जोड़ें पर क्लिक करें।

मैं पहले से ही वहाँ में हेडर फाइल की नकल की है, तथापि इन निर्देशों का अलग प्रोफाइल के साथ आसान निर्माण नहीं बनाते हैं।

सिम्युलेटर प्रोफ़ाइल के साथ निर्माण करते समय DEVICE प्रोफाइल और blah-simulator.a के साथ बिल्ड करते समय मैं blah-device.a को लिंक करने के लिए एक्सकोड कैसे प्राप्त करूं?

किसी भी मदद की बहुत सराहना की जाती है।

उत्तर

5

ऐसा करने का एक आसान तरीका है। आप एक लक्ष्य के तहत "लाइब्रेरी खोज पथ" को डुप्लिकेट कर सकते हैं और प्रत्येक के लिए एक अलग आर्किटेक्चर सेट कर सकते हैं। फिर आप सिम्युलेटर और उपकरणों के लिए एक अलग पथ सेट कर सकते हैं।

1

सबसे आसान तरीका आपके मौजूदा एक को डुप्लिकेट करके दो अलग-अलग लक्ष्य बनाना होगा। एक "फू डिवाइस" और दूसरा "फू सिम्युलेटर" नाम दें। फिर XCode में blah-device.a पर राइट-क्लिक करें, लक्ष्य टैब का चयन करें और सुनिश्चित करें कि "Foo Device" लक्ष्य चालू है और "Foo Simulator" लक्ष्य की जांच की गई है।

बाला-सिम्युलेटर.ए के लिए दोहराएं लेकिन इस बार "फू डिवाइस" लक्ष्य बंद है और "फू सिम्युलेटर" लक्ष्य चालू है।

अब जब भी आप सिम्युलेटर बिल्ड करना चाहते हैं तो सुनिश्चित करें कि आप सक्रिय एसडीके पॉपअप से सिम्युलेटर का चयन करें और लक्ष्य पॉपअप से "फू सिम्युलेटर" चुनें। डिवाइस परीक्षण के लिए डिवाइस और "फू डिवाइस" लक्ष्य का चयन करें।

+0

धन्यवाद के लिए अलग जोड़ने पथ का उपयोग कर सकते हैं! वैसे भी इसे किसी अन्य लक्ष्य के बिना पूरा करने के लिए और केवल XCode प्रोफाइल का उपयोग सेटिंग बनाने के लिए? – CVertex

+0

समस्या यह है कि अगर blah-device.a और blah-simulator.a दोनों समान प्रतीकों को निर्यात करते हैं। इसके आस-पास एक तरीका हेडर में #if TARGET_IPHONE_SIMULATOR ... के आधार पर परीक्षण करना है और FooDevice बनाम FooSimulator के लिए Foo को प्रीप्रोसेसर मैक्रो के रूप में परिभाषित करना है। फिर आप दोनों पुस्तकालयों को शामिल कर सकते हैं और सही प्रतीक जुड़ा हुआ है। लेकिन यदि दोनों पुस्तकालयों में एक ही लिंकर प्रतीक शामिल हैं तो आपको डुप्लिकेट प्रतीक त्रुटियां मिलेंगी। उस स्थिति में, एकमात्र तरीका एक को बनाम एक स्थिति के तहत जोड़ने से बाहर करना है। आप लिंकर पथ मानों के साथ परेशान हो सकते हैं लेकिन एकाधिक लक्ष्यों के साथ जाना बहुत आसान है। – Ramin

14

भविष्य के संदर्भ के लिए, इस तरह की स्थितियों को संभालने का एक अच्छा तरीका अलग-अलग आर्किटेक्चर को ग्लोब करना है। यह एक ही है जिसमें आप एक्सकोड में शामिल कर सकते हैं। आप लाइपो कमांड लाइन उपकरण के साथ ऐसा कर सकते हैं:

लाइपो libx.a liby.a -पहले आउटपुट libz.a

तो libx.a ARMv6 और ARMv7 और liby.a के लिए i386 है उदाहरण, परिणामी लाइब्रेरी, libz.a, armv6, armv7, और i386 होगा।

आप lipo -info के माध्यम से .a फ़ाइल का भी निरीक्षण कर सकते हैं।

उम्मीद है कि इससे मदद मिलती है।:)

2

आप विभिन्न पुस्तकालयों linking path's

+0

यह एक महान टिप है, धन्यवाद! – natevw

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

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