Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
880 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [linux] Définir variables d'environnement dans Makefile

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[linux] Définir variables d'environnement dans Makefile

n°1013363
allawos
Posté le 15-03-2005 à 14:31:07  profilanswer
 

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.

mood
Publicité
Posté le 15-03-2005 à 14:31:07  profilanswer
 

n°1013374
allawos
Posté le 15-03-2005 à 14:40:45  profilanswer
 

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 !

n°1013379
Taz
bisounours-codeur
Posté le 15-03-2005 à 14:44:49  profilanswer
 

on va faire comme si j'avais rien lu.
 
strcmp retourne une valeur < 0, == 0 ou > 0
 
strcpy(a, b) retourne a

n°1013383
allawos
Posté le 15-03-2005 à 14:48:52  profilanswer
 

comprend pas ou tu veux en venir ?

n°1013385
Taz
bisounours-codeur
Posté le 15-03-2005 à 14:49:40  profilanswer
 

ooops

n°1013388
allawos
Posté le 15-03-2005 à 14:50:44  profilanswer
 

Allez Taz, je sais que tu connais la réponse à ma question ;)

n°1013391
Taz
bisounours-codeur
Posté le 15-03-2005 à 14:51:37  profilanswer
 

make != bash

n°1013393
allawos
Posté le 15-03-2005 à 14:52:50  profilanswer
 

... bon je vois que t'es pas disposé à m'aider ... tant pis :( ... quelqu'un d'autre ? Merci !

n°1013395
Taz
bisounours-codeur
Posté le 15-03-2005 à 14:53:56  profilanswer
 

l'export de make, c'est uniquement pour des sub-make

n°1013398
allawos
Posté le 15-03-2005 à 14:54:57  profilanswer
 

OK, mais un make, il doit bien pouvoir définir la valeur d'une variable d'environnement ?

mood
Publicité
Posté le 15-03-2005 à 14:54:57  profilanswer
 

n°1013403
Taz
bisounours-codeur
Posté le 15-03-2005 à 15:00:36  profilanswer
 

pour faire quoi ?

n°1013406
gedeon
Posté le 15-03-2005 à 15:02:29  profilanswer
 

Tu definis des variables de compilation ou le linkage, etc,  utilisables dans ton make pas des veriables d'environnement

n°1013422
allawos
Posté le 15-03-2005 à 15:13:15  profilanswer
 

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" ?


Message édité par allawos le 15-03-2005 à 15:14:18
n°1013430
gedeon
Posté le 15-03-2005 à 15:19:33  profilanswer
 

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

n°1013467
allawos
Posté le 15-03-2005 à 15:42:06  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [linux] Définir variables d'environnement dans Makefile

 

Sujets relatifs
PostgreSQL/Linux : probleme de création de table [résolu][VBA] Excel : perte variables globales sans fermer le classeur
Les variables[C#/PPT] Ouverture d'un fichier PPT et accès aux variables
Récuperation de variables d'un XML et affichage de ces derniers[linux 2.4 usb] isochrone implique-t-il thread ?
debutant - garder mes variables d'une page à l'autre[C] prog système linux, besoin d'une explication
autre problèmes: la récupération de variables dans script PHPcompiler un prog win32 à partir de linux
Plus de sujets relatifs à : [linux] Définir variables d'environnement dans Makefile


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR