मैंने हाल ही में अपनी प्रोजेक्ट निर्देशिका में फ़ाइलों को व्यवस्थित करने का निर्णय लिया है। मैंने अपने स्वयं के निर्देशिका में कुछ अलग-अलग फ़ाइल प्रकारों के लिए पार्सर्स को स्थानांतरित कर दिया और ओकम्बुबिल्ड का उपयोग करने का भी निर्णय लिया (क्योंकि परियोजना अधिक जटिल हो रही थी और सरल शैल स्क्रिप्ट अब पर्याप्त नहीं थी)।सबफ़ोल्डर (ओकम्बुबिल्ड) में मॉड्यूल को उचित रूप से संकलित करना
मैं कुछ बुनियादी नियमों (ocaml_lib
पर कॉल करके, मैं कुछ अन्य समय ओकंप्लिंड का उपयोग करूंगा) के साथ मायोकाम्बिल्ड को संशोधित करके बाहरी परियोजनाओं को सफलतापूर्वक शामिल करने में सक्षम था, लेकिन मैं इस परियोजना में मॉड्यूल के रूप में फ़ोल्डर को सही तरीके से कैसे शामिल करना है, इस पर अटक गया हूं । मैंने parser.mlpack
फ़ाइल बनाई और इसे शामिल करने के लिए उचित मॉड्यूल के साथ भर दिया (उदाहरण के लिए, "पार्सर/डेट", एट कैटेरा) ने parser.mli
को उनके कार्यान्वयन के लिए निर्देशिका की जड़ में लिखा, और _tags
फ़ाइल को संशोधित किया (नीचे देखें) ।
संकलन के दौरान, पार्सर निर्देशिका ठीक से घुमाया जाता है, और parser.cmi
, parser.mli.depends
दोनों _build
निर्देशिका में बनाए गए थे; साथ ही पार्सर्स उपनिर्देशिका में सभी *.cm[xio]
फ़ाइलें।
मुझे लगता है कि मैं कुछ अनावश्यक कर रहा हूं, लेकिन इस पर ध्यान दिए बिना, परियोजना अभी भी संकलित करते समय पार्सर मॉड्यूल नहीं पा रहा है!
धन्यवाद!
_tags
debug : true
<*.ml> : annot
"parser" : include
<parser/*.cmx>: for-pack(Parser)
<curlIO.*> : use_curl
<mySQL.*> : use_mysql
<**/*.native> or <**/*.byte> : use_str,use_unix,use_curl,use_mysql
संकलन त्रुटि
/usr/local/bin/ocamlopt.opt unix.cmxa str.cmxa -g -I /usr/local/lib/ocaml/site-lib/mysql mysql.cmxa -I /usr/local/lib/ocaml/curl curl.cmxa curlIO.cmx utilities.cmx date.cmx fraction.cmx logger.cmx mySQL.cmx data.cmx project.cmx -o project.native
File "\_none\_", line 1, characters 0-1:
Error: **No implementations provided for the following modules:**
Parser referenced from project.cmx
Command exited with code 2.
आप देखेंगे -I parser
ऊपर जोड़ने चरण में शामिल नहीं है; वास्तव में पार्सर संबंधित फाइलों में से कोई भी शामिल नहीं है!
संपादित करें: टिप्पणियों और नीचे दिए गए उत्तर से नए विवरण जोड़े गए।
हां, यह काम किया, लेकिन इसका इरादा नहीं है। निर्देशिका की सामग्री का प्रतिनिधित्व करने वाला एक मॉड्यूल नहीं बनाया गया था; वे सीधे submodules द्वारा संदर्भित हैं। संकलन के दौरान '-pack' तर्क उचित मॉड्यूल में जोड़ा जाता है। लेकिन अंतिम उत्पाद में उपयोग नहीं किया जाता है। क्या मेरी व्याख्या -पैक गलत है? – nlucaroni
'-pack' को एक मॉड्यूल बनाना चाहिए जिसमें अन्य मॉड्यूल submodules के रूप में हों। फिर आपका अन्य कोड उन्हें उनके submodules के रूप में संदर्भित करना चाहिए (उदा। 'पार्सर। कॉनफर्सर'); यदि यह कभी उन्हें सीधे संदर्भित करता है (केवल 'कन्फपार्सर' बिना 'ओपन'िंग' पार्सर 'के पहले), तो चीजें गड़बड़ हो जाएंगी। क्या आपके पास 'parser.mli' नहीं होने पर' -verbose' आउटपुट पोस्ट कर सकता है? –
मैंने parser.mli फ़ाइल को वापस जोड़ा। मुझे लगता है कि किसी कारण से पैक को संकलित करते समय एक त्रुटि को तोड़ना नहीं था जहां इसे करना चाहिए। ** मेरी 'mlpack' फ़ाइल में एक अतिरिक्त मॉड्यूल था जिसे मैंने ** स्थानांतरित कर दिया था। – nlucaroni