Waar houdt de IDE bij waar de files voor .h en .cpp staan

IDE gerelateerde berichten
Berichten: 7
Geregistreerd: 26 Feb 2020, 21:44

Waar houdt de IDE bij waar de files voor .h en .cpp staan

Berichtdoor PK dam » 28 Apr 2020, 16:09

Blijkbaar houdt de IDE in een file bij waar de .h en .cpp files zijn opgeslagen.
Indien ik deze files in een sub map van Libraries neer zet kan de IDE ze bij het compileren wel vinden, maar met de foutmelding dat ze niet in de file Libraries staan.
Compileer je dan weer, dan weet de IDE meteen waar ze staan en zie je de melding niet weer.
Wanneer ik de .h en .cpp files daarna in de sketch folder zet, dan kan de IDE ze bij het compileren niet vinden.
Je ziet de files wel in de TABs naast de .ino TAB.
Ik heb wel sketches waarbij de .h en .cpp files wel in de sketch folder staan.
Blijkbaar is ergens een verwijzing naar de locatie van de .h en .cpp files opgeslagen in een file die bij de sketch hoort.
Mijn vraag: Waar en hoe kan ik er voor zorgen dat ik de files in de sketch folder kan zetten en dat ze dan ook bij compileren gevonden worden.
Dit is wel zo makkelijk, want dan staan ze ook in de IDE TABs, naast de .ino TAB.

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Waar houdt de IDE bij waar de files voor .h en .cpp staa

Berichtdoor Koepel » 28 Apr 2020, 16:28

De extra *.ino, *.cpp en *.h bestanden zie ik altijd in tabs staan in de Arduino IDE. Dat is nog nooit verkeerd gegaan.
Volgens mij kunnen ze ook in een subfolder staan, maar dat heb ik nog niet gedaan.
Het includen van die lokale *.h bestanden doe ik in het hoofd-bestand (de *.ino van het project) en met quotes " dus niet met kleiner-dan en groter-dan.

De pre-processor van de Arduino IDE wordt regelmatig verbeterd en gewijzigd. In het verleden ging het zoeken van bestanden soms anders.

Welke versie van de Arduino IDE gebruik je ?
Gebruik je quotes " om een lokaal *.h bestand te includen ?
Doe je het includen in het hoofd-bestand ?

De libraries kunnen op verschillende plaatsen staan, en kunnen een verschillende structuur van subfolders hebben. Dat zijn misschien wel 5 mogelijkheden.

Berichten: 7
Geregistreerd: 26 Feb 2020, 21:44

Re: Waar houdt de IDE bij waar de files voor .h en .cpp staa

Berichtdoor PK dam » 28 Apr 2020, 22:10

Ik gebruik niet de tekens rond de .h file naam, maar daar zit denk ik niet het probleem.
Dezelfde sketch heb ik in een sketch folder en ik kon de .h en .cpp files naar deze sketch folder verplaatsen en ze bleken in de TABS te zien en ze werden door de IDE gevonden.
Gek genoeg krijg ik dit niet voor elkaar met dezelfde sketch in een andere sketchfolder.
Ik geef de .h files wel telkens een andere naam, zodat ze niet door elkaar gehaald kunnen worden en ik zeker weet dat de sketch de juiste .h en .cpp files gebruikt.
Volgens mij moet er ergens een file-tje zijn waar de sketch bij houdt waar de files .h en .cpp staan.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Waar houdt de IDE bij waar de files voor .h en .cpp staa

Berichtdoor Koepel » 28 Apr 2020, 23:51

Kun je de sketch laten zien ?
Als je helemaal geen include gebruikt voor de lokale *.h bestanden, dan worden de *.h bestanden misschien niet meegenomen.
Mocht de Arduino preprocessor ze per ongeluk toch meenemen, dan is dat een foutje. Misschien dat ze door een foutje worden meegenomen en dat de volgorde van de naam afhangt. Dan zou ik kunnen verklaren wat jij hebt. Maar je bent de enige ter wereld die een *.h bestand als vanzelf aan je project wilt toevoegen.

Als je in de c-taal een *.h bestand wilt gebruiken dan zul je het moeten includen.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Waar houdt de IDE bij waar de files voor .h en .cpp staa

Berichtdoor Koepel » 29 Apr 2020, 08:00

Ik heb het nog even geprobeerd, maar dit werkt echt niet:
Code: Alles selecteren
#include test.h


Ook de include weglaten werkt bij mij nooit.

Ik haal ook zelf wel eens de bestanden van een library naar mijn project, zodat ze in de tabs staan. Soms geef ik ze een andere naam, maar als ik die library niet installeer, dan gebruik ik soms de originele naam. Dat gaat bij mij altijd goed.

Berichten: 7
Geregistreerd: 26 Feb 2020, 21:44

Re: Waar houdt de IDE bij waar de files voor .h en .cpp staa

Berichtdoor PK dam » 29 Apr 2020, 12:55

Uiteraard staat de include in de sketch. De .h en .cpp files staan in dezelfde sketch folder.
Werkt prima. Beide files in de TABs tezien en te openen. Sketchfolder staat op de D partitie. Arduino.exe en de Libraries op de C partitie.
Ik had de beide files uit de Arduino librarie naar de sketchfolder gemoved.

Wanneer ik dezelfde sketch in een andere sketch folder op de D partitie plaats, dan moet ik de .h en .cpp ineens in de librarie van de Arduino folder op de C partitie plaatsen. Sterker nog, er komt een foutmelding waarin wordt gemeld dat de files in een librarie folder worden verwacht die niets met de sketch te maken heeft. Ze worden echter wel gevonden in de librarie van de sketch.
Compileer ik dan weer, dan vindt de IDE ze direct en is de foutmelding er niet meer. Alles werkt weer normaal.

Kortom, ergens wordt (volgens mij) bijgehouden door de sketch waar de files worden verwacht en waar ze staan.
Er moet ergens een file zijn met deze info.
Heb gekeken of in VOORKEUREN van de IDE iets te vinden is, maar hier is wel een sketch locatie te selecteren, maar hiermee los ik mijn probleempje niet op.
Heb wat verder gezocht, er worden veel files geplaatst in de C partitie in een folder Arduino15 (Dit is niet de Arduino folder waar het Arduino.exe en bij behoren files staan) en hier zijn heel veel files te vinden die in de tijd veranderen, zoals bv logfile. Deze kan je deleten en worden weer automatisch aangemaakt.
Ik verwacht hier eigenlijk iets te vinden. Heb het echter nog niet gevonden.
Wie weet hoe het precies werkt.

ps .h en .cpp in de sketchfolder zetten is wel heel handig. (zal wel de enige op de wereld zijn, dat moet dan maar ....)
Indien ik bij OPSLAAN ALS een ander sketch naam geef bv xxxxRev01 naar xxxxRev02, dan worden de .h en .cpp files ook in de nieuwe sketch folder gezet. Dit werkt voor mij heel handig indien ik wijzigingen in 1 van de 3 files wil aanbrengen. De nieuwe sketch gebruikt dan de nieuwe gewijzigde files uit de nieuwe sketchfolder

gebruik 1.8.12

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Waar houdt de IDE bij waar de files voor .h en .cpp staa

Berichtdoor Koepel » 29 Apr 2020, 13:20

We zijn nu een beetje langs elkaar aan het praten. Dat is het nadeel van een forum :(

Voor ons is het gemakkelijkste als je het probleem in een kleine werkende sketch kunt laten zien, zodat wij het zelf kunnen proberen. Maar als je een D: drive gebruikt, dan is alles anders :shock:

Arduino IDE 1.8.12 is de nieuwste :D

Dus je hebt wel dit:
Code: Alles selecteren
#include "test.h"

Dan staan er toch quotes om het bestand. Je schrijft dat je geen tekens gebruikt, dat begrijp ik niet :?
Zonder " en zonder < en > komt er een foutmelding, dus ik ging er van uit dat je geen include had. Daarom schreef ik dat je de enige ter wereld bent die een *.h bestand wilt meenemen zonder het te includen.

Ik zet zelf ook de *.cpp en *.h bestanden van een bibliotheek in de map van het project (waar het ino bestand staat), zoals ik al schreef.
Dat is niets vreemds aan, en de Arduino IDE houdt daar ook rekening mee.

In de verborgen 'arduino15' map staan settings en dingen die de Arduino IDE download. Als je via de Board Manager iets nieuws installeert, dan komt de hele ontwikkelomgeving voor die extra boards ook in de 'arduino15' map.

Je gebruikt de D: drive :shock:
In het verleden waren er hardnekkige problemen als iemand het *.ino bestand op het Bureaublad zet of op een netwerkschijf of op de D: drive. Die problemen hebben lang geduurd, maar uiteindelijk waren die problemen opgelost (dacht ik).
Als je iets van Java hebt geïnstalleerd, of nog resten van een oude Arduino IDE versie hebt, dan zitten die misschien in de weg. Als dat niet zo is, dan ben je tegen een bug in de Arduino IDE opgelopen :cry:

Eindelijk wat gevonden: https://github.com/arduino/Arduino/issues/8812.
Daar staat: "set compiler.cache_core to false in preferences.txt". Kun je dat eens proberen ?
Sluit de Arduino IDE af, ga naar die 'arduino15' map, open het bestand 'preferences.txt' en wijzig die regel naar: "compiler.cache_core=false".
Bij mij staat hij default op 'true'.

Kun je de sketch op je C: drive in Documenten\Arduino zetten en hopelijk deze toestanden achter je laten ?

Berichten: 7
Geregistreerd: 26 Feb 2020, 21:44

Re: Waar houdt de IDE bij waar de files voor .h en .cpp staa

Berichtdoor PK dam » 29 Apr 2020, 13:29

Ben er net achter gekomen dat de include in de ene sketch < *.h> gebruikt en in de andere "*.h"
In het eerste geval moeten de files in ergens in de librarie staan, in het tweede geval kunnen ze in de sketch folder staan.
Mijn probleem opgelost.

Begrijp nog steeds niet hoe het kan de de sketch de files in een librariefolder verwacht die niets met de sketch te maken heeft.
Dan komt er een melding dat de librarie folder niet de juiste is, maar compileren lukt wel.
De tweede keer compileren geeft de melding niet meer.

Berichten: 7
Geregistreerd: 26 Feb 2020, 21:44

Re: Waar houdt de IDE bij waar de files voor .h en .cpp staa

Berichtdoor PK dam » 01 Mei 2020, 09:31

Toch vreemd. Ik heb de .h en .cpp files nu in de sketch folder.
Bij compileren, geen foutmelding.

Bij compileren en uploaden krijg ik 4 meldingen, dat beide files in diverse subfolders van Libraries worden verwacht.
En ook worden de zelfde 4 foutmeldingen nog een keer herhaald. Dus totaal 8 meldingen.

Toch gaat uploaden goed en werkt alles netjes.
Iemand een verklaring hiervoor???

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Waar houdt de IDE bij waar de files voor .h en .cpp staa

Berichtdoor Koepel » 01 Mei 2020, 11:06

Dat is inderdaad vreemd.

Om te beginnen kun je de compiler uitvoer laten zien.
Zet bij de Voorkeuren/Instellingen de Uitgebreide uitvoer voor de compiler aan en zet de Compiler waarschuwingen op Allemaal.
Herstart de Arduino IDE en laat de complete compiler uitvoer zien.

Je kunt ook je sketch en alle bestanden die daar bij horen en een overzicht van de bestanden in je "libraries" folder laten zien.

Er is nog een mogelijkheid dat er stukken van een oude Arduino IDE op je computer staan die de boel in de war gooien. Maar die kans is niet zo groot, omdat ik eigenlijk geen idee heb hoe je bestanden er uit zien en wat je zoal doet.
Je hebt toch niet iets toegevoegd aan de "libraries" map van de Arduino IDE bij de C:\Program Files ?

Volgende

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Google [Bot] en 12 gasten