मैं एक आर्डिनो लाइब्रेरी (प्रभावी रूप से एक सी ++ कक्षा) लिखने की कोशिश कर रहा हूं जो स्वयं मेरे मैक के ~/दस्तावेज़/Arduino/पुस्तकालय निर्देशिका में स्थापित एक और पुस्तकालय का संदर्भ देता है।क्या Arduino IDE का उपयोग कर किसी अन्य लाइब्रेरी से लाइब्रेरी को शामिल करना संभव है?
पुस्तकालय मैं लिख रहा हूँ के सीपीपी के शीर्ष पर, मैं
#include <ReferencedLibrary.h>
और
#include "ReferencedLibrary.h"
... जो काम की न कोशिश की है। मैं अपने ~/दस्तावेज़/Arduino निर्देशिका में स्केच से सफलतापूर्वक #include <ReferencedLibrary.h>
कर सकता हूं। क्या मुझे कुछ याद आ रहा है या क्या यह Arduino IDE/makefile की सीमा है? क्या आसपास कोई काम है?
यह एक हैक जैसा प्रतीत हो सकता है, लेकिन यह पूरे प्रसंस्करण प्रतिमान के अनुरूप है। असल में एक स्केच ऐसा होता है जिसे आप सभी काम करने वाले टुकड़ों को एक साथ फ्यूज करने के लिए उपयोग करते हैं ताकि स्केच में सभी गोंद तर्क प्रदान करना बहुत उपयुक्त हो। – SRM
यह "बुराई" है। लाइब्रेरी का विचार अमूर्त कार्यक्षमता है और उपयोग के लिए एक संक्षिप्त API प्रदान करता है। '# शामिल करें" lib.h "लाइब्रेरी प्राप्त करने के लिए यह सब कुछ होना चाहिए (मान लें कि यह लोड पथ में है)। लाइब्रेरी के आंतरिक कार्यों के बारे में जानने के लिए लाइब्रेरी के क्लाइंट की आवश्यकता सिर्फ सादा गलत है। –
चर्चा है जो कहती है कि उपयोगकर्ता को मुख्य स्केच में सभी संदर्भित पुस्तकालयों को शामिल करना होगा। हालांकि, ऐसा करने से मैक्रोज़ या सरणी के लिए कई परिभाषा त्रुटियां उत्पन्न होती हैं जो निर्भर पुस्तकालय शीर्षलेख में परिभाषित होती हैं और उन स्रोतों को प्राप्त करने में सक्षम नहीं होने पर निर्भर स्रोत फ़ाइल परिणामों में शीर्षलेख को छोड़कर। लाइब्रेरी निर्भरताओं को पूरा करने का एकमात्र तरीका एक ही निर्देशिका में सभी शीर्षलेखों और स्रोतों को शामिल करना है (या अन्य सभी के माध्यम से चलने वाले बयान शामिल हैं और सापेक्ष के पथ को बदलते हैं, एक तीसरे पक्ष के लिब को लपेटते समय और शायद ही पोर्टेबल होते हैं)। –