Définir variables d'environnement dans Makefile [linux] - C - Programmation
Marsh Posté le 15-03-2005 à 14:40:45
Euh ... je réalise que "export" est une commande propre au shell bash ... connaissez-vous un moyen générique d'assigner une variables d'environnement (possiblement déjà existante) dans un makefile ?
Toute aide serait vraiment appréciée. merci d'avance !
Marsh Posté le 15-03-2005 à 14:44:49
on va faire comme si j'avais rien lu.
strcmp retourne une valeur < 0, == 0 ou > 0
strcpy(a, b) retourne a
Marsh Posté le 15-03-2005 à 14:50:44
Allez Taz, je sais que tu connais la réponse à ma question
Marsh Posté le 15-03-2005 à 14:52:50
... bon je vois que t'es pas disposé à m'aider ... tant pis ... quelqu'un d'autre ? Merci !
Marsh Posté le 15-03-2005 à 14:54:57
OK, mais un make, il doit bien pouvoir définir la valeur d'une variable d'environnement ?
Marsh Posté le 15-03-2005 à 15:02:29
Tu definis des variables de compilation ou le linkage, etc, utilisables dans ton make pas des veriables d'environnement
Marsh Posté le 15-03-2005 à 15:13:15
Zuuut
En fait, le but, c'est de pouvoir lancer mon application de n'importe ou. Mon application doit aller chercher un fichier. Donc dans l'appli, je fais get_env pour connaitre la racine du projet, puis j'ajoute le chemin relatif vers le fichier ... vous voyez ?
Du coup est-ce que je peux faire ca avec des variables de compilation ? Est-ce que si dans mon Makefile j'écris :
MON_PATH = "/home/moi/projet"
je peux ensuite faire dans mon code :
sprintf(str, "%s/chemin_relatif_vers_fichier", MON_PATH);
afin d'avoir str="/home/moi/projet/chemin_relatif_vers_fichier" ?
Marsh Posté le 15-03-2005 à 15:19:33
Maintenant tu arretes ou je demande a TAZ de venir avec sa planche à clous.
si tu veux utiliser des constantes dans tes lignes de codes, tu les definis dans ton source et pas dans le makefile.
Et par pitié documente toi sur ce qu'est un makefile et un fichier source en c
Marsh Posté le 15-03-2005 à 15:42:06
ouais bon ... (no comment) :
2 solutions à mon problème :
1 ------- (variables de compilation)
Dans makefile, rajouter dans la ligne de compilation du fichier :
-DMON_PATH=\"/home/moi/projet\" (les \ permettent de garder les " ).
puis dans l'application :
sprintf(str,"%s/chemin_relatif_vers_fichier", MON_PATH);
--> cette solution fonctionne mais implique que le chemin absolu de la racine est fixé par la compilation.
2 ------- (variables d'environnement)
Dans l'application, faire :
sprintf(str,"%s/chemin_relatif_vers_fichier", getenv("MON_PATH" ));
puis avant de lancer l'application, il faut définir la variable d'environnement MON_PATH. Ceci dépend alors du shell utilisé. Je pense que sous bash, ca donne :
export MON_PATH="/home/moi/projet"
--> cette solution permet de ne pas avoir à recompiler l'application si on déplace tous les fichiers (code+executables) dans un nouveau répertoire. Il faut simplement mettre à jour la variable d'environnement.
Marsh Posté le 15-03-2005 à 14:31:07
Bonjour,
je souhaite pouvoir paramétrer un chemin vers un répertoire en variable d'environnement. En effet, mon application fait un getenv du nom de la variable pour connaitre le répertoire de travail. Ca j'y arrive, pas de problème.
Par contre, je n'arrive pas à faire en sorte que mon makefile assigne la valeur à ma variable d'environnement.
Disons que dans le shell, si je fais :
export NOM_DE_MA_VAR="chemin_de_ma_var"
Ca marche nickel, en faisant env dans le shell, je vois bien apparaitre ma variable d'environnement avec la bonne valeur.
Cependant si je place la ligne :
export NOM_DE_MA_VAR="chemin_de_ma_var"dans mon makefile (pour le make all), ben la ligne est bien appellée, mais elle n'a pas d'effet, sur la variable en question ... ? Y'a-t-il un truc que je n'aurais pas compris ?
Merci d'avance.