Go Down

Topic: [RESOLU] syntaxe #include (Read 813 times) previous topic - next topic

icare

Aug 07, 2013, 04:30 pm Last Edit: Aug 08, 2013, 06:15 pm by icare Reason: 1
Bjr,
J'ai quelques problèmes avec la syntaxe de la directive #include :
Code: [Select]
#include <key.h> //ok fait référence au dossier key
et
Code: [Select]
#include "key.h"  //ok fait référence aux fichiers locaux du programme
mais comment faire si on veut utiliser :
- un sous répertoire au répertoire où se trouve le programme,
- un répertoire parent au répertoire où se trouve le programme.
Pour l'instant malgré les nombreux essais, le compilateur ne fait que de m'insulter.
@+
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Viproz

Salut,

Il me semble que c'est comme ceci :

Code: [Select]
#include "path/relatif/key.h"

Enfin, c'est possible qu'il cherche dans le dossier librairies au lieu de charcher dans le dossier du programme avec cette syntaxe


- un répertoire parent au répertoire où se trouve le programme.


Ceci n'est pas possible par contre
http://stilldrinking.org/programming-sucks

XavierMiller

Pour un répertoire parent, essayer ".."

fdufnews

<> la recherche se fait dans les répertoires définis pour la chaîne de compilation
"" le chemin est relatif par rapport à l'emplacement des sources.
      Donc pour un sous répertoire /repertoire/repertoire/fichier.h
      Pour un répertoire parent ../repertoire/repertoire/fichier.h (mettre autant de ../ que nécessaire pour remonter dans l'arborescence.

icare

Bsr,
Merci pour vos suggestions mais rien n'y fait.
Ça ne marche pas  =(
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

SesechXP

Salut,

Pas mieux que fdufnews :)
Quelle est l'arborescence de ton projet ? Quelles inclusions tentes-tu de faire ?
Julien - www.idreammicro.com

icare

Bjr,
Je souhaite faire l'arborescence suivante :
Code: [Select]

..../dossier_fichier_arduino/
         fichier_prog.ino
         /dossier_lib_local
             fichier_ex.h
             fichier_ex.cpp
ou bien
Code: [Select]

..../dossier_fichier_arduino/
         fichier_prog.ino
..../dossier_lib_local
         fichier_ex.h
         fichier_ex.cpp

La seule chose que j'arrive à faire est :
Code: [Select]

..../dossier_fichier_arduino/
         fichier_prog.ino
         fichier_ex.h
         fichier_ex.cpp

Si vous avez une solution, je suis preneur
@+
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

fdufnews

Je viens de regarder un peu.
Je pense que cela ne peut pas fonctionner. C'est le principe retenu par les développeurs de l'IDE qui pose problème. Le source est modifié et compilé dans un répertoire temporaire. Par conséquent lors de la compilation le chemin relatif vers les include n'est plus valide. Si on met le chemin en absolu c'est lors de l'édition de lien qu'il y a un problème car les sources dans le chemin de l'inclusion ne sont pas compilés.
A mon avis le plus simple serait que tu places tes librairies dans le répertoire sketchbook/libraires qui lui est correctement géré par la chaîne de compilation et l'édition de lien.
Ou alors il faut que tu fasses ton fichier make et que tu compiles en ligne de commande.

skywodd

Bonjour,

Avec l'ide arduino les #includes sont soumis à des contraintes très stricts.
- Les librairies doivent être dans un sous dossier du dossier "librairies".
- L'ide scan chaque librairie et fait une liste fichier .h -> dossier automatique au lancement.
Par conséquent tu n'inclut jamais réellement un fichier dans un dossier particulier, c'est l'ide qui détecte tes include <xxx.h> et ajoute les dossier des librairies qui correspondent.
- Les sous dossier ne sont pas géré par l'ide (sauf un dont je me rappelle plus le nom).

Ceci vaut pour les .h comme les .c .cpp, pas de sous dossier possible, même dans le dossier du .ino.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

icare

Bsr,
Merci pour toutes ces précisions, je vais rester avec la solution qui fonctionne.
Je laisse tous mes ???.h et ???.cpp dans le même dossier que truc.ino et je fais les #include "???.h"
Le but étant de ne pas être tributaire des librairies non de base d'Arduino.
Merci à tous
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Go Up