टूलचेन रिज़ॉल्यूशन को लागू करने से जुड़ी जानकारी

समस्या की शिकायत करें सोर्स देखें

ध्यान दें: यह सेक्शन, Basel डेवलपर के लिए है और नियम बनाने वालों को इसकी ज़रूरत नहीं है.

कई SkyFunction क्लास टूलचेन रिज़ॉल्यूशन प्रोसेस को लागू करती हैं:

  1. RegisteredToolchainsFunction और RegisteredExecutionPlatformsFunction मौजूदा कॉन्फ़िगरेशन और Workspace फ़ाइल के आधार पर, उपलब्ध टूलचेन और एक्ज़ीक्यूशन प्लैटफ़ॉर्म ढूंढें.

  2. SingleToolchainResolutionFunction की मदद से, हर एक्ज़ीक्यूशन प्लैटफ़ॉर्म के लिए एक टूलचेन टाइप को हल किया जाता है. इसका मतलब है कि हर एक्ज़ीक्यूशन प्लैटफ़ॉर्म के लिए, रजिस्टर किए गए सबसे अच्छे टूलचेन को नीचे दी गई शर्तों के आधार पर इस्तेमाल किया जाता है:

    1. target_compatible_with एट्रिब्यूट की जांच करके पक्का करें कि टूलचेन और टारगेट प्लैटफ़ॉर्म एक साथ काम करते हों.
    2. exec_compatible_with एट्रिब्यूट की जांच करके पक्का करें कि टूलचेन और एक्ज़ीक्यूशन प्लैटफ़ॉर्म एक साथ काम करते हों.
    3. अगर कई टूलचेन बचे हैं, तो सबसे ज़्यादा प्राथमिकता वाला टूल चुनें यानी वह टूल जो पहले रजिस्टर किया गया हो.
  3. ToolchainResolutionFunction, अनुरोध किए गए हर तरह के टूलचेन के लिए SingleToolchainResolutionFunction कॉल करता है. इसके बाद, यह तय करता है कि इस्तेमाल करने के लिए सबसे सही प्लैटफ़ॉर्म कौनसा है.

    1. सबसे पहले, ऐसे एक्ज़ीक्यूशन प्लैटफ़ॉर्म को हटाएं जिसमें अनुरोध किए गए हर टूलचेन टाइप के लिए कोई मान्य टूलचेन मौजूद नहीं है.
    2. अगर एक से ज़्यादा एक्ज़ीक्यूशन प्लैटफ़ॉर्म छोड़ दिए जाते हैं, तो सबसे ज़्यादा प्राथमिकता वाला प्लैटफ़ॉर्म चुनें (वह प्लैटफ़ॉर्म जो पहले रजिस्टर किया गया था).
      1. अगर एक्ज़ीक्यूशन प्लैटफ़ॉर्म पहले से ही टूलचेन के ट्रांज़िशन की वजह से सेट है, तो उसे पहले नीचे बताए गए तरीके से चुना जाएगा.

जैसा कि टूलचेन और कॉन्फ़िगरेशन में बताया गया है, टारगेट से टूलचेन पर निर्भरता के लिए एक खास कॉन्फ़िगरेशन का इस्तेमाल किया जाता है. यह एक ऐसा खास कॉन्फ़िगरेशन होता है जो दोनों के लिए, एक्ज़ीक्यूशन प्लैटफ़ॉर्म एक जैसा रहता है. "टूलचेन ट्रांज़िशन" नाम होने के बावजूद, इसे कॉन्फ़िगरेशन ट्रांज़िशन के तौर पर लागू नहीं किया जाता. इसके बजाय, इसे ConfiguredTargetKey की एक खास सब-क्लास के तौर पर लागू किया जाता है, जिसे ToolchainDependencyConfiguredTargetKey कहा जाता है. ConfiguredTargetKey के अन्य डेटा के अलावा, इस सब-क्लास में एक्ज़ीक्यूशन प्लैटफ़ॉर्म का लेबल भी होता है. जब ToolchainResolutionFunction यह सोच रहा हो कि किस एक्ज़ीक्यूशन प्लैटफ़ॉर्म का इस्तेमाल करना है, तो अगर ToolchainDependencyConfiguredTargetKey का फ़ोर्स्ड एक्ज़ीक्यूशन प्लैटफ़ॉर्म मान्य है, तो उसका इस्तेमाल किया जाएगा. भले ही, वह सबसे ज़्यादा प्राथमिकता वाला प्लैटफ़ॉर्म न हो.

ध्यान दें: अगर फ़ोर्स्ड एक्ज़ीक्यूशन प्लैटफ़ॉर्म मान्य नहीं है (ऐसा इसलिए है, क्योंकि कोई मान्य टूलचेन नहीं है या नियम या टारगेट में एक्ज़ीक्यूशन की सीमाएं हैं), तो इसके बजाय, सबसे ज़्यादा प्राथमिकता वाले मान्य एक्ज़ीक्यूशन प्लैटफ़ॉर्म का इस्तेमाल किया जाएगा.