2010-05-04 21 views
9

में विशिष्ट फ़ाइलों के लिए विशिष्ट कंपाइलर झंडे मुझे कुछ ऐसी परियोजनाओं पर काम करने का काम सौंपा गया है जिनमें कुछ भ्रमित गुण हैं।एक्सकोड

प्रोजेक्ट इस प्रकृति का है कि यह आईफोन सिम्युलेटर और आईफोन डिवाइस के लिए एक ही संकलन सेटिंग्स के साथ संकलित नहीं होगा। मुझे लगता है कि इसे लक्षित प्लेटफ़ॉर्म के आधार पर x86 या arm6/7 के लिए विशेष रूप से संकलित करने की आवश्यकता के साथ करना है।

तो परियोजना की बिल्ड सेटिंग्स, जब एक्सकोड के बिल्ड सेटिंग्स दृश्य में देखा जाता है, तो मुझे प्रति विशिष्ट फ़ाइलों के विशिष्ट कंपाइलर झंडे सेट करने में सक्षम नहीं करता है।

CE7FEB5710F09234004DE356 /* MyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CE7FEB5510F09234004DE356 /* MyFile.m */; settings = {COMPILER_FLAGS = "-fasm-blocks -marm -mfpu=neon"; }; }; 

वहाँ हाथ से संपादन प्रोजेक्ट फाइल के बिना यह करने के लिए कोई तरीका है: हालांकि, पिछले डेवलपर कि इस प्रोजेक्ट पर काम किसी भी तरह लाइन की घोषणा की है? मुझे पता है कि प्रोजेक्ट फ़ाइल को संपादित करने से इसका परिणाम पूरी तरह से टूट सकता है, इसलिए मैं ऐसा नहीं करूँगा, क्योंकि मैं स्पष्ट रूप से पिछले डेवलपर जितना नहीं जानता हूं।

तो स्पष्ट करने के लिए, सवाल यह है:

निर्माण में विफल रहता है जब सिम्युलेटर के लिए संकलन जब तक कि मैं -fasm-blocks ध्वज को हटा दें। जब तक मैं -fasm-blocks ध्वज जोड़ता हूं तब तक डिवाइस के लिए संकलन करते समय बिल्ड विफल हो जाता है। प्रोजेक्ट फ़ाइल को हाथ से संपादित किए बिना प्रति ध्वज इस फ़ाइल को सेट करने का कोई तरीका है?

+0

आप एएसएम कोड को फ़िल्टर करने के लिए '#if! TARGET_IPHONE_SIMULATOR' का उपयोग कर सकते हैं। – kennytm

उत्तर

7

आप इस प्रकार अलग-अलग स्रोत फ़ाइलों के लिए अतिरिक्त संकलक झंडे को परिभाषित कर सकते हैं:

  • पहले लक्ष्य का चयन आप
  • "जानकारी प्राप्त करें"
  • चयन
  • निर्माण करने जा रहे सही स्रोत फ़ाइल पर क्लिक करें "बिल्ड" टैब पर
  • क्लिक
  • अपने अतिरिक्त संकलक झंडे को परिभाषित

हालांकि यह आपके मामले में एक बेहतर समाधान की तरह लगता है कि लक्ष्य को डुप्लिकेट करना है और दो लक्ष्य हैं - एक वास्तविक डिवाइस के लिए और एक सिम्युलेटर के लिए। परियोजना स्तर से सामान्य बिल्ड सेटिंग्स को विरासत में रखें और आवश्यकतानुसार प्रति-लक्षित बिल्ड सेटिंग्स को ट्विक करें।

+0

धन्यवाद! तो यह दूसरे प्रश्न का उत्तर दे सकता है जिसे मैं पूछने जा रहा था, जो मैं संकलन ध्वज को स्वचालित कैसे कर सकता था? मैं एक रन स्क्रिप्ट चरण स्थापित कर सकता हूं जो संकलन स्रोत चरण से पहले चलता है और लक्ष्य प्लेटफार्म पर्यावरण चर के आउटपुट के आधार पर एक कंपाइलर झंडे पर्यावरण चर के मान को सेट करता है। कंपाइलर फ्लैट केवल एक विशेष फ़ाइल पर सेट करने की आवश्यकता है, इसलिए मुझे लगता है कि यह दो लक्ष्यों को स्थापित करने और एक परियोजना व्यापक कंपाइलर ध्वज बनाने के लिए अधिक हो सकता है ... – Jasarien

2

विशिष्ट फ़ाइल के लिए GetInfo कॉल करें, आप इस फ़ाइल के लिए बिल्ड सेटिंग्स सेट कर सकते हैं। इसके बारे में एक्सकोड परियोजना प्रबंधन गाइड भी देखें।

6

This ब्लॉग पोस्ट यहोशू Nozzi से कैसे Xcode 4, जहां वे कहते हैं में यह करने के लिए बताते हैं:

... परियोजना नेविगेटर में अपना प्रोजेक्ट चुनें प्रासंगिक लक्ष्य का चयन करें (आप केवल एक हो सकता है), फिर बिल्ड चरण टैब का चयन करें। संकलन स्रोत चरण और व्हायोला का विस्तार करें! एक कंपाइलर ध्वज कॉलम आपको उस लक्ष्य के लिए प्रत्येक फ़ाइल के झंडे सेट करने देता है।