Bonjour
J’aurais aimé savoir comment je peux compiler ce qui suit comme je le souhaite. Car je rencontre une erreur de priorité entre les headers et je ne trouve pas comment exclure un header pour pas qu’il ne soit pris en compte par gcc
.
Des précisions:
on est dans le cadre de test unitaire, donc je ne peux pas toucher au code, ni renommer les fichiers dans ./toto
L’arborescence:
.
├── toto
│ ├── toto.h (qui #define un certain nombre de MACRO non-désiré qui me pose problème)
│ └── toto.c (qui #include "toto.h")
└── tata
├── toto.h (copie de toto/toto.h sans les MACRO non-désirés)
└── tata.c (fait appelle à des fonctions définis dans toto.c)
La compilation:
gcc ./tata/tata.c -I./tata -I./toto -o ./tata/tata
Le résultat:
Ici, c’est ./toto/toto.h
qui sera compilé et non pas ./tata/toto.h
. Car étant plus local à ./toto/toto.c
que ./tata/toto.h
, bien qu’il soit appelé plus à gauche sur la ligne d’argument de la commande gcc
.
La problématique:
J’ai cherché dans man gcc
, man cpp
, man ld
, man make
, mais je n’ai pas trouvé comment exclure ./toto/toto.h
.
Comment faire pour que ./toto/toto.c
prennent en compte ./tata/toto.h
plutôt que ./toto/toto.h
?
Merci d’avance