2012-05-16 21 views
7

मैं एक (स्काला) स्काला 2.10.0-एम 3 के लिए स्काला आईडीई प्लगइन उपलब्ध साथ ग्रहण 3.7.2 में मैक्रो को संकलित करने के कोशिश कर रहा हूँ, लेकिन मैं निम्नलिखित त्रुटि का अनुभव कर रहा हूँ:ScalaMacros और ग्रहण

"मैक्रो कार्यान्वयन नहीं मिला: XXXXX (इसका सबसे आम कारण यह है कि आप उसी संकलन चलाने में मैक्रो कार्यान्वयन का उपयोग नहीं कर सकते हैं जो उन्हें परिभाषित करता है) यदि आपको अपने शेष कार्यक्रम के साथ मैक्रो कार्यान्वयन को परिभाषित करने की आवश्यकता है, तो दो चरण संकलन पर विचार करें पहले चरण के आउटपुट को इंगित करने वाले दूसरे चरण में -Xmacro-fallback-classpath "

मुझे पहले से ही पता है कि इसे सरल संपादक और एक शब्द से कैसे बचें इनल (केवल त्रुटि संदेश का पालन करें), लेकिन क्या ग्रहण में दोहरी चरण कार्य प्राप्त करना संभव है?

+0

अब तक, मैं इसमें मैक्रो कार्यान्वयन को रखने के लिए एक नई परियोजना बनाने जा रहा हूं। यह बदसूरत कामकाज कोड को संकलित करने की अनुमति देता है। – jeslg

+2

हां, मैक्रोज़ से निपटने के लिए यह एक कैननिकल समाधान है। –

उत्तर

9

किसी मौजूदा से लिंक करने के लिए मैक्रो प्रोजेक्ट कैसे बनाएं परियोजना:

  • उदाहरण ProjectMacros के लिए नाम के एक स्केला प्रोजेक्ट बना है, उदाहरण के Macros.scala उस में मैक्रो शामिल करने के कारण नाम की एक फ़ाइल डाल दिया। इस परियोजना को समस्याओं के बिना संकलित करना चाहिए, क्योंकि केवल मैक्रोज़ हैं।
  • मौजूदा स्कैला प्रोजेक्ट पर राइट-क्लिक करें, फिर "गुण"। गुण विंडो खुलती है।
  • Java Build Path अनुभाग में:
    • टैब Projects के तहत, ProjectMacros जोड़ें।
    • टैब Libraries के तहत, Add Class Folder पर क्लिक करें, और ProjectMacros/bin निर्देशिका का चयन करें।
  • Project References अनुभाग में, जाँच ProjectMacros

अब, मौजूदा परियोजना में आप मैक्रो कार्य करता है और व्याख्या का उपयोग कर सकते हैं import Macros._ की तरह एक आयात जोड़ने के बाद।

1

आप शायद इमारत के लिए चींटी का उपयोग कर सकते हैं, लेकिन चूंकि आप कह रहे हैं कि आपने टर्मिनल के साथ इसे पहले से ही हासिल किया है, मुझे लगता है कि स्क्रिप्ट बनाना आसान होगा, और इसे कस्टम बिल्डर का उपयोग करके चलाएं (प्रोजेक्ट गुणों पर जाएं, बिल्डर्स पर क्लिक करें -> नया ... -> प्रोग्राम और फिर इसे अपनी स्क्रिप्ट चलाने के लिए सेट करें।

3

ठीक है, दो अलग-अलग परियोजनाओं (और परियोजना संदर्भों के साथ खेलना) में मैक्रो कार्यान्वयन और मैक्रो आमंत्रण को अलग करना इस मुद्दे को हल करने लगता है। वैसे भी, स्कैला -डाइड प्लगइन को स्काला 2.10-एम 4 (मैक्रो सपोर्ट के मामले में) के लिए अपने संस्करण के साथ उल्लेखनीय रूप से सुधार किया गया है, इसलिए मैं इसे अपडेट करने की सलाह देता हूं।

+3

क्या आप कह रहे हैं कि स्कैला आईडीई अब एक ही परियोजना में टायर संकलन का समर्थन करता है? यदि हां, तो कैसे? – nilskp