(Marlin) Bibliotheken einbinden?

Hallo zusammen,

ich habe ein Problem bei der Marlin 1.1.9 Kompilierung ( IDE 1.8.8 ) :
Die Bibliotheken werden nicht gefunden. Diese sind ja alle in einem Verzeichnis (User/ .../Marlin/Marlin1.1.9/Marlin). Da wohin ich das Marlin-Paket von github hinkopiert habe.

Dieser Fehler kommt massenhaft, für jede Datei einer...

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10808 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\mega" "C:\\Users\\xxx\\AppData\\Local\\Temp\\arduino_build_19650\\sketch\\G26_Mesh_Validation_Tool.cpp" -o nul
Error while detecting libraries included by C:\Users\xxx\AppData\Local\Temp\arduino_build_19650\sketch\G26_Mesh_Validation_Tool.cpp

Alle anderen Bibliotheken, die ich bisher benutzt habe sind im Verzeichnis .../Arduino/libraries/... jede in einem eigenen Ordner der so heißt wie die Bibliothek selbst.

Was kann ich tun, damit die Marlin libraries, die sich alle im selben Verzeichnis wie das Marlin.ino befinden auch gefunden werden?

Gruß
purehunter

purehunter:
Was kann ich tun, damit die Marlin libraries, die sich alle im selben Verzeichnis wie das Marlin.ino befinden auch gefunden werden?

Bibliotheken, die sich im gleichen Verzeichnis wie der Sketch befinden, bindest Du in den Sketch ein, indem Du

#include "bibliothek.h"

schreibst. Beachte die Anführungszeichen. Sonst steht sowas in < und >

Gruß

Gregor

gregorss:
Bibliotheken, die sich im gleichen Verzeichnis wie der Sketch befinden, bindest Du in den Sketch ein, indem Du

#include "bibliothek.h"

schreibst. Beachte die Anführungszeichen. Sonst steht sowas in < und >

Die Bibliotheken werde ja alle genau so versucht einzubinden, aber offensichtlich nicht gefunden. So verstehe ich zumindest die Fehlermeldung "Error while detecting libraries..."

G26_Mesh_Validation_Tool.cpp

...

  #include "Marlin.h"
  #include "planner.h"
  #include "stepper.h"
  #include "temperature.h"
  #include "ultralcd.h"
  #include "parser.h"
  #include "serial.h"
  #include "bitmap_flags.h"
...

In den Tabs in der IDE kann ich die auch alle sehen, zumindest mit dem "Pfeil nach unten" werden alle aufgelistet.

Gruß
Purehunter

Error while detecting libraries included by

Das ist nicht tragisch!
Nichts, was man beheben müsste.

:o Eher im Gegenteil. :o
Ich schätze, das benötigt eine Erklärung ...

Erstmal die Quelle der Meldung:
Der Arduino Builder, ist es, welcher sie dir vor die Füße wirft.
Das Programm, welches die fertige Anwendungen aus den Quellen zusammen klöppelt.

Der Builder findet die benutzten Librarys nicht im Standard libraries Ordner.
Und meckert das an.
Das ist nicht dramatisch, weil er trotzdem versucht das Gelumpe zu übersetzen.
Was ihm auch gelingt, da die benötigten Dateien im Projekt Ordner vorliegen.

Also, ausnahmsweise die Ansage: Ignoriere diese Sorte Meldungen.
Denn sie sind kein Problem.

Combie,

Danke für Erklärung!

Was mich gewundert hat ist, dass die Dateien, zu denen diese Meldung kommt, allesamt .cpp sind.
Als Teil einer Bibliothek ganz normal, mit einer gleichnamigen .h Datei.

Was aber passiert mit solchen "alleinstehenden" .cpp Dateien? Sind die "gleichwertig" wie .ino ?

Gruß
Purehunter

purehunter:
Was aber passiert mit solchen "alleinstehenden" .cpp Dateien? Sind die "gleichwertig" wie .ino ?

Ja.

In h-Dateien (Header-Dateien) stehen üblicherweise nur die Köpfe von Funktionen und anderes Zeug - dort kann man z. B. nachsehen, wenn man wissen möchte, mit welchen Namen und Parametern Funktionen aufgerufen werden. In den cpp-Dateien stehen dann die eigentlichen Funktionskörper (das, was in den Funktionen tatsächlich passiert).

Ein kleines Beispiel findest Du z. B. hier.

Gruß

Gregor

.h Dateien werden über #include-Anweisungen gefunden und beim Übersetzen von .cpp Dateien mit bearbeitet.

[ .ino Dateien werden von der Arduino-IDE zusammengefasst, etwas ergänzt und in eine gemeinsame .cpp gewandelt ]

Der eigentliche Trick besteht darin, dass die IDE alle .cpp Dateien des Projekt - Ordners mit in das Projekt übernimmt, und (hokus - pokus) auch die erforderlichen .cpp Dateien der Bibliotheken findet.

purehunter:
Was aber passiert mit solchen "alleinstehenden" .cpp Dateien? Sind die "gleichwertig" wie .ino ?

Jede .cpp/.c ist eine einzelne, von den anderen .cpp/.c völlig unabhängige, Übersetzungseinheit.

Erst der Linker verschweißt diese Übersetzungseinheiten zu einem Klumpen.

[ .ino Dateien werden von der Arduino-IDE zusammengefasst, etwas ergänzt und in eine gemeinsame .cpp gewandelt ]

Und wird damit auch zu einer eigenständigen Übersetzungseinheit.