[OPGELOST] "Arduino.h: No such file" bij compileren Arduino project in Eclipse

Hallo,

ik maak gebruik van de Arduino Eclipse plugin om mijn Arduino project in Eclipse te programmeren. Bij het compileren krijg ik volgende waarschuwing, gevolgd door een hele reeks errors die veroorzaakt worden door het feit dat de standaard Arduino library niet gevonden wordt.

17:03:39 **** Build of configuration Release for project Arduino_Sumo ****
make all 
Building file: ../src/MotorControl/MotorControl.cpp
Invoking: AVR C++ Compiler
avr-g++ -D__IN_ECLIPSE__=1 -DARDUINO=101 -DUSB_PID= -DUSB_VID= -Wall -Os -ffunction-sections -fdata-sections -fno-exceptions -g -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -MF"src/MotorControl/MotorControl.d" -MT"src/MotorControl/MotorControl.d"  -c -o "src/MotorControl/MotorControl.o" -x c++ "../src/MotorControl/MotorControl.cpp"
../src/MotorControl/MotorControl.cpp:1:21: warning: Arduino.h: No such file or directory

Ik heb een printscreen bijgevoegd van de bestandsstructuur van mijn project in Eclipse. Het project heet 'Arduino_Sumo' en 'Arduino_Uno' is de Arduino library die ontstond bij het aanmaken van het Arduino project in Eclipse, zoals op de site van de plugin vermeld staat http://www.baeyens.it/eclipse/UsethePlugin.html. Zoals op de printscreen te zien is, is er enkel een probleem in de source-file van 'MotorControl'. De code van 'MotorControl.cpp' begint als volgt:

#include <Arduino.h>
#include "MotorControl.h" //include the declaration for this class

MotorControl::MotorControl(int enable1, int phase1, int enable2, int phase2,
		int mode) {
	// code voor de constructor
}

Het bizarre is dat 'DistanceSensor' en 'ColorSensor' gelijkaardige include-statements bevatten terwijl deze bestanden zonder problemen compileren.
Ik heb ook al opgemerkt dat, als ik de code in 'MotorControl.cpp' reduceer tot enkel de include-statements, de warning nog steeds verschijnt bij het compileren. Bovendien komt het probleem dan ook voor in 'DistanceSensor.cpp', dat wil zeggen:

#include <Arduino.h>

geeft bij het compileren dan plots ook dezelfde warning als hierboven in de 'DistanceSensor' source file.

Hoe los ik dit probleem op?
Ik apprecieer het enorm als iemand mij hiermee kan helpen.

Philippe

project explorer.PNG

Philippe
Als ik je opmerkingen zo lees dan merk ik dat je nieuw bent in eclipse.
Dus eerst een paar algemene opmerkingen.

  1. De plugin compileert bestand per bestand.
  2. Indien een bestand niet kan gecompileerd worden stopt hij ermee en geeft een fout (je kan dat ook anders instellen als je wilt)
    Per toeval is het eerste bestand "Motorcontrol.cpp". Dat kan je zien aan
make all 
Building file: ../src/MotorControl/MotorControl.cpp

"Make all" betekent dat het programma "make" alles gaat bouwen. De volgende lijn zegt make dat hij begint aan MotorControl.cpp.
Dus je vergelijkingen met ander files gaan niet op omdat die nog nooit gecompileerd zijn. Indien je motorcontrol.cpp zij verwijderen zouden de andere bestanden dezelfde fouten geven.

Ik zie aan je bijgesloten afbeelding dat je folders hebt gemaakt. Ik vermoed dat je er ook eens 1 hebt verwijderd. Als dat zo is dan heb je nu last van This page has been moved
Dat zie ik ook in het commando dat je poste

avr-g++ -D__IN_ECLIPSE__=1 -DARDUINO=101 -DUSB_PID= -DUSB_VID= -Wall -Os -ffunction-sections -fdata-sections -fno-exceptions -g -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -MF"src/MotorControl/MotorControl.d" -MT"src/MotorControl/MotorControl.d"  -c -o "src/MotorControl/MotorControl.o" -x c++ "../src/MotorControl/MotorControl.cpp"

Daar staat geen -I die verwijst naar de Arduino code. En dan vindt hij Arduino.h natuurlijk ook niet.

Met vriendelijke groet
Jantje

Jantje,

hartelijk dank om zo snel te reageren. Ik vind je Arduino plugin voor Eclipse trouwens echt geweldig! Zo veel heb ik nog niet geprogrammeerd voor de Arduino, maar de bijgeleverde IDE vond ik toch wat te beknopt. Ik heb Eclipse enkel nog maar gebruikt om (een beetje) Java te programmeren. Het meeste van C++ en het gebruik van Eclipse om Arduino/C++ te programmeren is inderdaad nieuw voor mij.

Jouw post heeft mijn probleem inderdaad opgelost, maar ik heb nog wel een vraag.
Voorlopig heb ik bij "Properties->C/C++ General->Paths and symbols" elk van mijn subdirectories (zoals "src/MotorControl") apart toegevoegd, naast de reeds aanwezige "/Arduino_Sumo". Op die manier kan ik bijvoorbeeld #include <MotorControl.h> gebruiken in "Arduino_Sumo.ino". Is er ook een manier mogelijk om te zeggen dat de compiler voor een include-statement moet zoeken naar de header-file in "/Arduino_Sumo" én al zijn subdirectories?

Philippe

Philippe
dat kan maar: This page has been moved
En je kan dit toch beter opossen met een library aan te maken.
Met vriendelijke groet
Jantje

Jantje,

je hebt gelijk: libraries maken van mijn aparte subdirectories is een eenvoudige oplossing. Nu werkt het allemaal naar behoren.
Bedankt voor de snelle reacties en je hulp.

mvg,

Philippe

Ps: ik heb ook een vote geplaatst voor die CDT bug.