Pages: [1]   Go Down
Author Topic: [RESOLU] syntaxe #include  (Read 660 times)
0 Members and 1 Guest are viewing this topic.
Moselle (FR)
Offline Offline
Edison Member
*
Karma: 16
Posts: 1238
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bjr,
J'ai quelques problèmes avec la syntaxe de la directive #include :
Code:
#include <key.h> //ok fait référence au dossier key
et
Code:
#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.
@+
« Last Edit: August 08, 2013, 11:15:25 am by icare » Logged

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Offline Offline
Full Member
***
Karma: 0
Posts: 129
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Il me semble que c'est comme ceci :

Code:
#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
Logged


Belgium
Offline Offline
Sr. Member
****
Karma: 15
Posts: 489
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3435
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

<> 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.
Logged

Moselle (FR)
Offline Offline
Edison Member
*
Karma: 16
Posts: 1238
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bsr,
Merci pour vos suggestions mais rien n'y fait.
Ça ne marche pas  smiley-cry
Logged

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Offline Offline
Full Member
***
Karma: 0
Posts: 224
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Pas mieux que fdufnews smiley
Quelle est l'arborescence de ton projet ? Quelles inclusions tentes-tu de faire ?
Logged


Moselle (FR)
Offline Offline
Edison Member
*
Karma: 16
Posts: 1238
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bjr,
Je souhaite faire l'arborescence suivante :
Code:
..../dossier_fichier_arduino/
         fichier_prog.ino
         /dossier_lib_local
             fichier_ex.h
             fichier_ex.cpp
ou bien
Code:
..../dossier_fichier_arduino/
         fichier_prog.ino
..../dossier_lib_local
         fichier_ex.h
         fichier_ex.cpp
La seule chose que j'arrive à faire est :
Code:
..../dossier_fichier_arduino/
         fichier_prog.ino
         fichier_ex.h
         fichier_ex.cpp
Si vous avez une solution, je suis preneur
@+
Logged

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3435
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Moselle (FR)
Offline Offline
Edison Member
*
Karma: 16
Posts: 1238
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Pages: [1]   Go Up
Jump to: