एक `.ino` फ़ाइल को उसी नाम के फ़ोल्डर में क्यों होना चाहिए?


12

मैं एक बहुत ही जटिल परियोजना को व्यवस्थित करने की कोशिश कर रहा हूं और मैं सभी वास्तविक कोड को फ़ोल्डर src(स्रोत) नाम देना चाहता हूं, लेकिन मैं मुख्य .inoफाइल को रखना चाहता हूं main.ino(यह भी इसमें होगा src)। फिर जब मैं कोड खोलने की कोशिश करता हूं, तो आईडीई कहता है कि main.inoनाम वाले फ़ोल्डर में होना चाहिए main

ऐसा क्यों है?

मैं त्रुटि संदेश को पूरी तरह से समझता हूं, लेकिन अरुडिनो में फ़ाइल नामकरण ऐसा क्यों होता है। क्या इसे बदलने का कोई तरीका है?

जवाबों:


6

एएफएआईके, वह एक क्वर्की है जिसे अरुडिनो आईडीई में बनाया गया है। सबसे अच्छा वर्कअराउंड मैं सोच सकता हूं कि फाइल संरचना कुछ इस प्रकार है:

ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
                                  + myproj.ino    + sensor.h
                                                  + sensor.cpp
                                                  + (more files)

, जहां myproj.cpp सिर्फ #include's main.cpp । यह आपकी परियोजना फाइलों को "साफ" छोड़ देना चाहिए, जैसे कि उन्हें अधिक विशिष्ट वातावरण में भी काम करना चाहिए।

अपडेट करें:

मैंने आपके प्रश्न से "मुख्य" नाम उधार लिया था, लेकिन प्रतिबिंब पर, "मुख्य" एक आरक्षित नाम है, विशेष रूप से, हर C या C ++ प्रोग्राम में एक main.c या main.cpp है जो इसके शीर्ष स्तर का कोड है, यदि सिस्टम द्वारा उपलब्ध कराया गया है आप एक प्रदान नहीं करते हैं। इसलिए मैंने इसे फ़ोल्डर- और प्रोजेक्ट-नेम (लेकिन इसे आज़माने के लिए स्वतंत्र महसूस) के रूप में उपयोग करने से परहेज किया और मैंने आरेख को अपडेट किया है। आपको जो भी करने की आवश्यकता है वह एक परियोजना फ़ोल्डर और एक .ino फ़ाइल है, उसी नाम की। .Ino फ़ाइल कर सकता है

#include <src/anything-else-you-like>

, जैसे, आपकी शीर्ष स्तर की कोड फ़ाइल, इस प्रकार बाकी सब कुछ खींचती है। आप फ़ोल्डर #includeमें से प्रत्येक फ़ाइलों के लिए अपने .ino की आवश्यकता कर सकते हैं src, अगर यह संकलक अपने आप पता नहीं लगाता है , कि जहां आपकी अन्य फाइलें हैं।

BTW, यदि आप अपने शीर्ष फ़ाइल के लिए main.cpp नाम का उपयोग करते हैं, तो इसे सेटअप () और लूप () फ़ंक्शन (और सीरियल इवेंट फ़ंक्शन, यदि आप उपयोग करते हैं) को कॉल करना होगा। शायद नाम 'मुख्य' को छोड़ना सबसे अच्छा है, सिस्टम को मुख्य रूप से वही प्रदान करें जो हर Arduino प्रोग्राम डिफ़ॉल्ट रूप से प्राप्त करता है, और अपने प्रोजेक्ट कोड को विशिष्ट Arduino तरीके - सेटअप () और लूप () से शुरू करते हुए लिखें।


myproj.cpp, तुम्हारा मतलब है myproj.ino? क्योंकि मैं नहीं देखता कि कहां myproj.cppहै!
Dat Ha

ठीक है, थोड़ी समस्या है, अगर मैं ऐसा करता हूं, तो कुछ बुनियादी Arduino फ़ंक्शन (जैसे नक्शा () और analogRead ()) जो कि Sens.cpp में सम्‍मिलित हैं, संकलक द्वारा पहचाने नहीं जाएंगे।
Dat Ha

वैकल्पिक रूप से, यदि विंडोज बॉक्स पर काम कर रहे हैं, तो जंक्शन कमांड का उपयोग करें और बेहतर नाम के साथ निर्देशिका में एक सही नाम निर्देशिका को "लिंक" करें। या, यदि लिनक्स बॉक्स पर काम कर रहे हैं, तो वही करने के लिए प्रतीकात्मक लिंक कमांड का उपयोग करें।
st2000 24:16

(मेरा अपडेट देखें - आपकी .ino फ़ाइल को अन्य फ़ाइलों में से प्रत्येक को शामिल करना पड़ सकता है)।
JRobert

3

जब आपके पास कई .INOफाइलों से बना एक प्रोजेक्ट है , तो आईडीई को कैसे पता होना चाहिए कि "मुख्य" कौन है? संकलन के दौरान आईडीई सभी .INOफाइलों को एक साथ एक अखंड फाइल में समेटता है। यह "मुख्य" एक के साथ शुरू होता है और फिर प्रत्येक को अंत तक वर्णानुक्रम में जोड़ता है।

यह इस तरह से किया जाता है ताकि आपके शामिल और वैश्विक चर, जो आपको अपनी "मुख्य" .INOफ़ाइल में डालना चाहिए , समाप्त कार्यक्रम की शुरुआत में हैं।

ऐसा करने के लिए आईडीई को यह जानना होगा कि कौन सी फाइल "मुख्य" है। और जिस तरह से यह काम करता है वह उसी को खोजने के द्वारा होता है जिसे उसी नाम दिया गया है जैसे कि स्केच फ़ोल्डर में है।

में UECIDE मैं इसे एक कदम आगे ले और एक में पूरी फ़ोल्डर बारी यौगिक दस्तावेज़ ताकि आप नहीं रह गया है एक फ़ोल्डर में प्रवेश करने और एक को खोलने के लिए है .INOएक स्केच को खोलने के लिए फ़ाइल - वास्तविक फ़ोल्डर को स्वयं पूरे स्केच परियोजना है। फिर से इस तरह के फ़ोल्डर की पहचान .INOउसके भीतर एक फाइल के रूप में की जाती है जिसे फ़ोल्डर के समान नाम दिया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.