2010-12-04 17 views
7

मैं अतिरिक्त जोड़ सकते हैं जब erlc के साथ एक erlang फ़ाइल संकलन तो जैसे निर्देशिका में शामिल हैं:क्या मैं एआरएल कमांड में निर्देशिका शामिल कर सकता हूं?

erlc -I /home/trotter/code/open-source/yaws/include src/myapp.erl 

जब मैं erl के भीतर से संकलन कर रहा हूँ हालांकि, मैं कमांड लाइन पर यह करने के लिए एक तरह से दिखाई नहीं देता। इसके बजाय, मैं repl भीतर निम्नलिखित क्या करना है:

> compile:file("src/myapp", 
       [verbose, 
       report_errors, 
       {i,"/home/trotter/code/open-source/yaws/include"}]). 

इस तरह के कुछ कमांड लाइन तर्क ERL को पारित करने के रूप में इस है कि मैं के बारे में पता नहीं है, करने के लिए एक बेहतर तरीका है? यदि नहीं, तो को सूखने के लिए कोई सुझाव नहीं है मुझे संकलन हर बार गंदा पथ टाइप करने की आवश्यकता है।

उत्तर

5

मैं शायद ही कभी शैल से संकलित करता हूं - केवल c(foo) के साथ छोटी टेस्ट स्क्रिप्ट के लिए। मेरा सेटअप यह है:

मेरे पास एक बुनियादी ढांचा है। make सॉफ़्टवेयर बनाता है (मेक केवल rebar के लिए एक रैपर है)। मैं को compile emacs कमांड से बाध्य करके emacs के भीतर से कोड बना सकता हूं। vim में यदि आप मेरी वीम मेमोरी मुझे सेवा करते हैं तो यह :make कमांड के साथ ऐसा ही कर सकता है (यह दो साल हो गया है)। अब यह निश्चित रूप से कोड बनाता है और इसे ebin डीआईआर में फेंक देता है।

अगले कदम ebin निर्देशिका के बारे में ज्ञान के साथ Erlang शुरू करने के लिए है:

erl -pa ./ebin 

है कि किसी भी संदर्भ foo मॉड्यूल जिसका अर्थ है चला जाता है और ./ebin/foo.beam के लिए जाँच करता है। जब मुझे पता चलता है कि मुझे कुछ कोड ठीक करना है, तो मैं इसे संपादक में ठीक करता हूं, कोड को F12 के साथ संकलित करता हूं और फिर उस शेल में l(foo) निष्पादित करता है जो कोड को हॉट-लोड करता है।

यह भी लाभ है कि किसी भी संकलन त्रुटि अब संपादक के अधिकार क्षेत्र में है, इसलिए मैं जल्दी से त्रुटि पर कूद सकता हूं और इसे ठीक कर सकता हूं।

+0

ठीक है, यह मेरी समस्या का पूरी तरह से बेहतर समाधान है। मुझे नहीं पता था कि मैं l (foo) को हॉट-लोड संकलित कोड में उपयोग कर सकता हूं। – Trotter

+0

चीजों को आसान बनाने के लिए, मैंने प्रोजेक्ट रूट में 'कोड: add_patha ("./ dict") के साथ .erlang फ़ाइल बनाई है। जब भी मैं उस परियोजना पर 'erl' चलाता हूं, तब पथ पथ सूची की शुरुआत के लिए "dict" पथ जोड़ा गया। – Carlosedp

2

आप ERL_COMPILER_OPTIONS सेट कर सकते हैं।

http://www.erlang.org/doc/man/compile.html

+1

तो क्या यह इस तरह काम करेगा: ERL_COMPILER_OPTIONS = '[{i, "/ home/trotter/code/open-source/yaws/include"}]' erl? – Trotter

+0

यह मेरे लिए काम किया। – utapyngo

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

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