AFAIK, das ist eine Eigenart, die in die Arduino IDE eingebaut ist. Die beste Problemumgehung, die ich mir vorstellen kann, ist eine Dateistruktur wie:
ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
+ myproj.ino + sensor.h
+ sensor.cpp
+ (more files)
, wo myproj.cpp nur main.cpp ist #include
. Dadurch sollten Ihre Projektdateien "sauber" bleiben, sodass sie auch in einer typischeren Umgebung funktionieren.
Aktualisieren:
Ich habe den Namen "main" aus Ihrer Frage ausgeliehen, aber "main" ist ein reservierter Name. Insbesondere hat jedes C- oder C ++ - Programm eine main.c- oder main.cpp-Datei als obersten Code, die vom System bereitgestellt wird, wenn Sie bieten keine. Daher habe ich es vermieden, dies als Ordner- und Projektname zu verwenden (aber probieren Sie es einfach aus), und ich habe das Diagramm aktualisiert. Was Sie brauchen, ist ein Projektordner und eine darin enthaltene .ino-Datei mit demselben Namen. Die .ino-Datei könnte
#include <src/anything-else-you-like>
B. Ihre Code-Datei der obersten Ebene, wodurch alles andere abgerufen wird. Möglicherweise benötigen Sie für Ihre .ino-Datei #include
jede Datei im src
Ordner. Wenn der Compiler dies nicht selbst herausfindet, befinden sich dort Ihre anderen Dateien.
Übrigens, wenn Sie den Namen main.cpp für Ihre Top-Datei verwenden, müssen die Funktionen setup () und loop () (und die Funktion für serielle Ereignisse, wenn Sie diese verwenden) aufgerufen werden. Es ist wahrscheinlich am besten, den Namen 'main' in Ruhe zu lassen, das System die gleiche Hauptleitung bereitstellen zu lassen, die jedes Arduino-Programm standardmäßig erhält, und Ihren Projektcode auf die typische Arduino-Weise zu schreiben - beginnend mit setup () und loop ().
myproj.cpp
meinstmyproj.ino
du Weil ich nicht sehe womyproj.cpp
ist!Wenn Sie ein Projekt haben, das aus mehreren
.INO
Dateien besteht, wie soll die IDE wissen, welche die "Haupt" ist? Während der Kompilierung verkettet die IDE alle.INO
Dateien zu einer monolithischen Datei. Dies geschieht beginnend mit dem "Haupt" und hängt dann jedes der anderen alphabetisch an das Ende an.Dies geschieht auf diese Weise, sodass Ihre Includes und globalen Variablen, die Sie in Ihre "Haupt"
.INO
-Datei einfügen sollten, am Anfang des fertigen Programms stehen.Dazu muss die IDE wissen, welche der Dateien die "Hauptdatei" ist. Und das funktioniert so, indem Sie den finden, der den gleichen Namen hat wie der Ordner, in dem sich die Skizze befindet.
In UECIDE gehe ich noch einen Schritt weiter und verwandle den gesamten Ordner in ein zusammengesetztes Dokument, sodass Sie keinen Ordner mehr eingeben und eine
.INO
Datei öffnen müssen, um eine Skizze zu öffnen - der eigentliche Ordner selbst ist das gesamte Skizzenprojekt. Wiederum wird in dieser Art von Ordner eine.INO
Datei identifiziert , die den gleichen Namen wie der Ordner hat.quelle