जवाबों:
आर्किटेक्चर वे हैं जिन्हें आप बनाना चाहते हैं, वैध आर्किटेक्चर वे हैं जो आप अपने कोडबेस के साथ निर्माण कर सकते हैं।
तो शायद आप केवल armv7s के लिए अपना बाइनरी बनाना चाहते हैं, लेकिन समान स्रोत कोड armv7 और armv6 के लिए ठीक संकलित करेगा। तो VALID_ARCHS = armv6 armv7 armv7s
, लेकिन आप सेट करते हैं ARCHS = armv7s
क्योंकि यह सब आप वास्तव में अपने कोड के साथ बनाना चाहते हैं ।
या, Apple-ese में:
ARCHS (आर्किटेक्चर)
पहचानकर्ताओं की अंतरिक्ष-पृथक सूची। उन आर्किटेक्चर (ABI, प्रोसेसर मॉडल) को निर्दिष्ट करता है जिनसे बाइनरी को लक्षित किया जाता है। जब यह बिल्ड सेटिंग एक से अधिक आर्किटेक्चर को निर्दिष्ट करती है, तो उत्पन्न बाइनरी में प्रत्येक निर्दिष्ट आर्किटेक्चर के लिए ऑब्जेक्ट कोड हो सकता है।
तथा:
VALID_ARCHS (मान्य आर्किटेक्चर)
पहचानकर्ताओं की अंतरिक्ष-पृथक सूची। उन आर्किटेक्चर को निर्दिष्ट करता है जिनके लिए बाइनरी का निर्माण किया जा सकता है। निर्माण के दौरान, यह सूची ARCHS बिल्ड सेटिंग के मूल्य के साथ प्रतिच्छेद की जाती है; परिणामी सूची उन आर्किटेक्चर को निर्दिष्ट करती है जिन पर बाइनरी चल सकती है। यदि परिणामस्वरूप आर्किटेक्चर सूची खाली है, तो लक्ष्य कोई बाइनरी उत्पन्न नहीं करता है।
स्रोत: Xcode बिल्ड सेटिंग संदर्भ
व्यवहार में, आप VALID_ARCHS
अकेले छोड़ देते हैं और इसे बदलने के बारे में चिंता नहीं करते हैं, और केवल ARCHS
उन आर्किटेक्चर को सेट करना चाहते हैं जिन्हें आप बनाना चाहते हैं। आमतौर पर, आप एक डीबग बिल्ड को बस सेट करते हैं NATIVE_ARCH
, क्योंकि आप केवल उस मशीन के लिए डीबग संस्करण बनाना चाहते हैं जिसे आप परीक्षण कर रहे हैं / उस पर चल रहे हैं, और रिलीज़ आपके द्वारा समर्थित आर्किटेक्चर के पूर्ण स्पेक्ट्रम के लिए बनाता है।
Apple दस्तावेज़ से, हम जानते हैं कि द्विआधारी Xcode का निर्माण सूची Valid Architectures
के साथ प्रतिच्छेद होगा Architectures
।
इसलिए, मुझे नहीं लगता कि जेरेमी का जवाब सही है, जैसा कि वह कहता है:
तो शायद आप केवल armv7s के लिए अपना बाइनरी बनाना चाहते हैं, लेकिन समान स्रोत कोड
armv7 और armv6 के लिए ठीक संकलित करेगा । इसलिएVALID_ARCHS = armv6 armv7 armv7s
, लेकिन आप ARCHS = armv7s सेट करते हैं, क्योंकि आप वास्तव में अपने कोड के साथ निर्माण करना चाहते हैं।
जब आप सेट करते हैं VALID_ARCHS = armv6 armv7 armv7s
, और सेट करते हैं ARCHS = armv7s
, तो बाइनरी एक्सकोड का निर्माण armv7s होगा arm यह armv6 / armv7 के साथ संगत नहीं हो सकता है।
और अगर आप armv6 / armv7 / armv7s के साथ संगत करना चाहते हैं compatible आपको सेट करना होगा VALID_ARCHS = armv6 armv7 armv7s
और ARCHS = armv6
। इस तरह, बाइनरी Xcode का परिणाम armv6 होगा, और यह armv6 / armv7 / armv7s दोनों पर ठीक चल सकता है क्योंकि आर्म प्रोसेसर बैकवर्ड है। ।