Guten Morgen,
ich habe ein Problem mit dem Einbinden von cpp.-Funktionen aus einer eigenen Library und komme schlicht nicht weiter. Ziel ist einige sachlich unterschiedliche Funktionen, die sich auf mehrere .cpp- / .h-Datei erstrecken, einmal zentral in einem Unterordner zur Verfügung zu stellen, damit sie von verschiedenen Sketches aufgerufen werden können. Bei meinen Versuchen habe ich mich an dem Leitfaden von Heise "Arduino-/IoT-Extra – Bibliotheken selbst implementieren" orientiert. Folgende Resultate:
- einzubindende .cpp- / .h-Dateien in .../libraries/ (d.h. für jede einzubinden Dateii ein Unterordner)
…/libraries/Dice/Dice.
…/libraries/binary/binary.*
-> funktioniert
- einzubindende *.cpp- / *.h-Dateien in .../libraries/geminsamerOrdner (d.h. alle zusamengehörende .cpp- / .h-Dateien in einem Ordner)
…/libraries/Dice/Dice.
…/libraries/Dice/binary.
-> funktioniert nicht
Besteht hierzu überhaupt eine Möglichkeit - dann könnte der Ordner libraries übersichtlich gehalten werden; oder muss tatsächlich für jede mehrfach zu verwendende Datei.* ein Unterordner gebildet werden?
Ich hoffe ich habe mich nicht zu umständlich ausgedrückt und hoffe auf helfende Hinweis.
Gruß
wupperpi
Hallo,
ich denke mal, das ist der Preis für das Konzept "Arduino" und der angestrebten einfachen Anwendung.
Entgegen meiner sonstigen Meinung würde ich in Deinem Fall mal sagen: nimm eine "richtige IDE".
Preis dort ist die Einarbeitungszeit, Gewinn eine Art der Freihet bei solchen Sachen.
include-Pfade, Verwaltung der Porjektdateien, Umgang mit make-file, Linkerscript usw. usw. gehören dann dazu.
Arduino verfolgt den Weg, das alles, aus meiner Sicht durchaus sehr erfolgreich, voe dem Nutzer zu verbergen.
Eine Lib ist ein Ordner, darin die .h und .cpp und die IDE ist zufrieden. Die IDE scannt beim Start diese festgelegte Ordnerstruktur und weiß, was es so alles gibt. Die IDE bastelt bei Boardauswahl ein passendes make, ein passendes Linkerscript, kennt die zugeörige Programmersoftware und die Parameter dazu.
Ich bin der Meinung, das macht sie auch verblüffend gut wenn man sich eben an diese Konverntionen hält.
Ich kann auch mit einer "richtigen" IDE umgehen, trotzdem hat die ArduionoIDE da für meine Hobby-Projekte eindeutig gewonnen. Einfach, weil es für meine Hobbyprojekte extremer Zeitgewinn ist.
Insofern wirst Du entscheiden müssen. Es gibt auch etliche Wege, wie man das Verhalten sozusagen austricksen kann. Ich bin davon komplett weg, weil es eben irgendwann immer dafür hat, daß es nicht mehr klappte, mal schnell eine IDE portabel zu installieren, noch schnell Borad-Links hinzuzufügen und zu installieren, Lib-Ordner und Sketch aus dem anderen sketch-Ordner reinzukopieren und weitermachen zu können oder etwas zu testen.
Gruß aus Berlin
Michael
Hallo Michael,
ja so ist es wohl: Arduino verfolgt seinen Weg mit vielen Erleichterungen und einer Menge damit einhergehender Fallstricke.
Einem solchen bin ich wohl aufgesessen. Irgendwo in den Tiefen von Arduino existiert bereits eine Datei binary.h. Diese versucht er einzubinden; passt natürlich nicht mit dem Programm und führt zu abstrusen Fehlermeldungen.
Umbenennen der eigenen binary.* hilft und siehe da, es funktioniert.
Gruß
Udo
Hi
In den ausführlichen Meldungen müsste sich erkennen lassen, was der Compiler Alles zusammen packen will - dort müsste dann auch die binary.h von 'irgendwo auf der Platte' auftauchen.
MfG
Hallo,
alle Header (.h) und .cpp (Methoden) Dateien in einen Lib Unterordner zu kloppen macht keinen Sinn. Dann bräuchtest du auch keine mehrfachen Dateien sondern könntest alles was du braucht in eine .h und .cpp schreiben.
a) du schreibst jede Lib für sich und die kommt in einen eigenen Unterordner, also wie immer
b) jetzt kannst du jede dieser Libs in deinen Sketch einbinden (inkludieren), also wie immer
c) wenn eine Lib Methoden einer anderen Lib benötigt, dann kannst du diese in dessen Header inkludieren
d) sei wachsam vor Mehrfachinkludierungen