IDE v2.3.2 - include<x> No such file or directory

Hallo,

Frage, geht es nur mir so oder ist das Thema bekannt?

(Ergänzung: arbeitet derzeit mit der IDE 2 nur mit Arduino Nano ESP32.)

Ich habe recht häufig das Problem das bei neu angelegten Sketches beim Kompilieren der Fehler kommt die inkludierten Libs wären nicht vorhanden. Wiederholtes starten der Kompilierung hilft nicht.

Bsp., hier wird angeblich die ArduinoOTA.h nicht gefunden. Betrifft fast immer den Moment der Programmierung neu inkludierter Libs. Also nicht neu auf dem Rechner sondern die Zeile #include neu im Sketch hinzugefügt.

Alternativen für Wire.h: [Wire@2.0.0]
ResolveLibrary(Wire.h)
  -> Kandidaten: [Wire@2.0.0]
C:\Arduino IDE v2.3.2\portable\sketchbook\calibrate_LSM303_001\calibrate_LSM303_001.ino:6:10: fatal error: ArduinoOTA.h: No such file or directory
 #include <Wire.h>
          ^~~~~~~~      
compilation terminated.
exit status 1

Compilation error: ArduinoOTA.h: No such file or directory

Die ist aber definitiv vorhanden. Speichere ich den Sketch, schließe die IDE und öffne sie erneut kompiliert es ohne jedes Problem.

Nur bei mir so?

Die IDE 2.x gibt es "noch" nicht als Portable.

Das Bedeutet. :

Er sucht diverse Dateien unter

C:\users*** \ .arduinoIDE <- der Punkt ist absicht (die Leerzeichen sind wegen den Forum-Editor.

C:\users*** \ app-data\local\arduino15

Er will BEIDE Ordner.

Was Libs angeht. DA kann man den Such-Ordner verstellen.

Dazu unter Einstellungen den Sketchbook-Ordner ändern.
Dies ist der neue Hauptordner.
Darunter legt man ein Ordner mit den Namen seines Projekt an.
z.b. so :

Projektname : baui
C:\meine_projekte\baui\baui
C:\meine_projekte\baui\libraries
In Sketchbook muss stehen : C:\meine_projekte\baui

Projektname : bau2
C:\meine_projekte\bau2\bau2
C:\meine_projekte\bau2\libraries
In Sketchbook muss stehen : C:\meine_projekte\bau2

Durch diese Anordnung gelten für Baui + Bau2 jeweils andere Libs.
Der Vorteil dieser Anordnung ist. Das man das Risiko vermeidet das durch Libary-Update das Projekt nicht mehr Lauffähig ist.

Nachteil:
Wechselt man das Projekt muss man den Sketchbook-Ordner neu einstellen, die IDE beenden, und dann neu starten. Grund: Die IDE liest dann den passenden LIBS Ordner ein, und will sehr wahrscheinlich den Updaten.

Und man hat alle Libs zieg man auf der Festplatte.

Wie man da vorgeht muss jeder selbst entscheiden.

Ich persönlich habe ein Libs-Ordner gezippt und stelle/kopiere mir pro Projekt in den Projekt-Ordner nur die Libs rein die ich wirklich brauche. Was das ganze auch noch minimal schneller macht.

Gruß

Pucki

Davon war auch keine Rede.

Und der gesamte Rest ist bekannt, aber am Thema vorbei.

Da mit dem Compile-Vorgang die includierten Libs eingesammelt werden, wird hier der Cachemechanismus evtl. einen Streich spielen und nicht bemerkt werden, dass eine lib dazu gekommen ist.

Ich würde in dem Fall in das jeweilige Projektverzeichnis gehen und sehen, was da eingesammelt wurde und beim nächsten Kompilevorgang den Unterschied feststellen.
Sollte das reproduzieren -> Issue

DOCH.

Das Problem ist, wenn libs nicht im "Norm-Ordner" liegen, kommt es vor das Updates/neue Libs nicht "eingebucht" werden. Deshalb muss man dann die IDE beenden und neu starten.
DANN liest er sich alles neu zusammen und das Problem ist weg.

Hatte ich einige Male schon.

In meinen Augen gibt es einige Bugs im Zusammenhang mit Verzeichnissen. Einige davon sollten aber beseitigt sein.

Gruß

Pucki

Willst Du schon wieder?
Kein Mensch spricht von einer portablen.

Die libs sind bereits integriert.
Werden die (nachträglich) in einen bestehenden Sketch eingebunden, kommt es zu dem Effekt.

Wieso sollte sich der Sketchordner ändern, wenn ich ein anderes Projekt lade und was hat das mit dem Speicherplatz der lib zu tuen?

Hallo,

genau, es geht nicht um neu/frisch installierte Libs oder dergleichen. Die Libs sind entweder schon lange installiert, bzw. werden von der IDE selbst mitgebracht. Das Einzige was ich mache ist, die Zeile #include im Sketch frisch zu schreiben von einer Lib, die wie gesagt, schon lange vorher vorhanden ist, auch vor dem Letzten öffnen der IDE. Wenn die IDE dann mit dem frischen #include ein Problem hat, hilft schließen und neu öffnen. Ab dann gibt es kein Problem mehr. Bis ggf. zur nächsten frisch getippten Zeile #include.

Könntest den richtigen Riecher haben, kann mit einem Cache o.ä. zusammenhängen. Ich werde der IDE auch etwas mehr Zeit geben, vielleicht macht die was im Hintergrund. Ich werde noch weiter das Problem provozieren und dann ein Ticket eröffnen.

Wie ich raushöre, bin aktuell nur ich davon betroffen.

1 Like

Oder viele benutzen die 2.x noch nicht.

Gruß Tommy

Oder das :wink:

Nein.
Zum compilieren werden die libs eingesammelt.
Und jetzt kommt der springende Punkt:
zum einsammeln wird der im Cache befindliche Sketch benutzt.
Danach wird alles im Verzeichnis reingeschrieben, auch der aktuelle Sketch, und dann dem Compiler vorgelegt, der aus dem Verzeichnis kompiliert.

So zumindest meine logische Auffassung.
Es gab doch in der 1er die Möglichkeit der Debugausgaben im Terminalfenster mit einer spezellen angepassten IDE - .exe.
Evtl. gibt es einen Parameter mit dem man das auch in der 2 aktivieren kann.
Dann sieht man die Abfolge.

Nicht unbedingt. Ich glaube , ich hate mal ne ähnliche Situation. Und ich denke auch, es könnte mit dem Cache zusammenzängen. Die IDE2.x.x (ichnutze fast nur noch die 2.3.2 brach ja ofte nach dem ersten Kompiliere wesentlich weniger Zeit, wenn sie wider neu compiliren muss, Weil sie anscheinnd sehr vil aus dem Cache nimmt, nach erstmligem compilieren. Bei mir war es jedoch so, dass ich aus nem anderen grund grad die IDE kurz geschlossen habe, und nacher wieder geöffnet, darum ist mir das dann nicht weiter als fehlf^verhalten aufgefallen und ich bin dem nicht weiter nachgegangen. Dazu kam, dass ich in letzter zeitnicht ganz soviel mit Arduino gemacht habe, darum fiel dieser Fehler bei mir nicht weiter ins Gewicht.

Weil ich recht gerne und inwischen auch fast ausschließlich die 2er IDE verwende hab' ich das eben mit bestehenden Sketchen und installierte Libs probiert:

Fehler tritt nicht auf

System: OpenSuse Tumbleweed / KDE

Hallo,

Danke für die Auskünfte.

Debugmöglichkeiten der IDE was diese selbst so treibt sind mir bis heute keine bekannt. Vielleicht wenn man die IDE-CLI verwendet. Theoretisch, ohne das ich es weiß, sollten die gleichen Ausgaben erscheinen wie innerhalb der grafischen IDE wenn man alle Ausgaben auswählt. Mal sehen was noch so möglich ist.

1 Like

Dann lies man die Fehlermeldung.

Das Projekt ist NICHT im Norm-Ordner.

Gruß

Pucki

Was soll der Ordner des Projekts mit der Frage portable IDE oder nicht zu tun haben, besonders wenn es überhaupt keine echte Portable IDE 2.x gibt.

Gruß Tommy

Er gibt einen möglichen Libary-Ordner an. Und das kann zu Konflikten mit den offizellen Ordner und desen Libs führen.

Zum Thema PARAMETER.

Gruß

Pucki

Das ist die Fehlermeldung.

Ein möglichen Ordner :
C:\Arduino IDE v2.3.2\portable\libraries würde ebendfalls durchsucht werden. Und wenn dort eine library drin ist, die im Konflikt mit C:\users\girly\appdata\local\arudino15\libraries steht, gibt es Stress.

Die IDE merkt das oft aber leider nicht immer.

DAS kannst du glauben oder es lassen. Mir egal.

Gruß

Pucki

Hallo Pucki,

jetzt mal ehrlich, dass wird doch jetzt Unsinn.

Doch ist es.
Ich versuche ja jeden zu verstehen. Aber hier weiß ich nicht was das werden soll. Alle Libs sind im richtigen Ordner. Alle Sketche sind im richtigen Ordner, Standard "sketchbook". Alle nachinstallierten Libs darin im Unterordner "libraries". Wenn das alles nicht so wäre würde nichts funktionieren. Das Eingangsbsp. verwendet sogar eine Standard Lib der IDE, die muss am richtigen Platz sein, was sie auch ist.
Ich denke eher du hast das Problem nicht verstanden.

Jetzt erkläre ich dir nochmal die Fehlermeldung:
C:\Arduino IDE 2.3.2\portable\sketchbook\calibrate_LSM303_001\calibrate_LSM303_001.ino:6:10: fatal error: ArduinoOTA.h: No such file or directory
Das hat nichts mit dem Speicherort des Sketches zu tun. Sie besagt nur das die in Zeile 6 in der Datei calibrate_LSM303_001.ino angegebene Lib, die dort inkludiert werden soll nicht gefunden wird. In besagter Zeile 6 steht #include <ArduinoOTA.h>
Warum die nicht gefunden wird steht nicht da. Das kann Hunderttausend Gründe haben.

Die nächste Logik wäre, wenn das was du ansprichst hier zutreffen würde, dann könnte ich die IDE schließen und öffnen bis ich schwarz werden würde und könnte nie kompilieren. Das trifft aber alles nicht zu. Das muss man doch verstehen wollen. Weil ich weiß (wir wissen) das nach schließen und öffnen der Spuk vorbei ist, kann es nicht an irgendwelchen falschen Speicherorten liegen. Das ist doch logisch, oder nicht?

Noch einmal zum Mitschreiben.

Der offizielle Ordner hat 0,nix mit den Ordner zu tun in den man das Programm installiert.

Schau mal in

C:\users\girly\appdata\local\arudino15\libraries

Girly = dein eingeloggter Username. !!!

DORT sind die Libarys und alles was Normal dabei geliefert wird.

Ich weiß das 1000% weil ich die IDE auch nicht in diese Ordner installiert habe , und den Stress schon hatte. Die Installation ist so flexible wie ein Stahlträger.

Liegt meiner Meinung daran das die hauptsächlich linux-Like sind. Da sind Installationen ab Hauptverzeichnis VERBOTEN.

Gruß

Pucki

Auch davon hast Du keinerlei Ahnung und auch wenn Du schreist, wird das nicht weniger falsch.

Gruß Tommy

Ich habe es unter Linux noch nicht geschafft eine Installation außerhalb von HOME zu machen.

Gruß

Pucki