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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [Make + Bash] @%$# de parentheses :)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Make + Bash] @%$# de parentheses :)

n°1125175
Cytoplasm
Posté le 30-03-2009 à 13:29:50  profilanswer
 

Salut les gens,
 
J'ai un probleme lamentable avec des parentheses qui disparaissent...  
 
Explications: le projet necessite qu'une fonction interne a gcc soit redefinie ce qui se fait avec une macro. Exemple:

Code :
  1. gcc -D "macro = ciel, mon mari" monprojet.c


 
Jusque la, pas de problemes. Mais... lorsque je veux sauver la commande dans un fichier "build.cmd", les parentheses qui protege la macro degagent et je rotis sur les piques de Satan. Exemple de contenu de build.cmd:

Code :
  1. gcc -D macro = ciel, mon mari monprojet.c


 
Ca a l'air con comme ca hein? Ben ouais... Et pourtant... Merci a toi si tu sais regler ca  :??:  
 
 
voici le Makefile (simplifie)
-------------------------
 

Code :
  1. FLAGS = -D "macro = ciel, mon mari"
  2. all:
  3.      echo gcc ${FLAGS} monprojet.c > build.cmd
  4.      gcc ${FLAGS} monprojet.c


mood
Publicité
Posté le 30-03-2009 à 13:29:50  profilanswer
 

n°1125184
fighting_f​alcon
Posté le 30-03-2009 à 13:44:28  profilanswer
 

Code :
  1. FLAGS = "-D 'macro=ciel, mon mari'"
 

ou si tu préféres, tout en double quote :

Code :
  1. FLAGS = "-D \"macro=ciel, mon mari\""


Message édité par fighting_falcon le 30-03-2009 à 13:44:57
n°1125191
Cytoplasm
Posté le 30-03-2009 à 14:03:19  profilanswer
 

Okay, il y a deux idees la:
A) Entourer le tout de doubles quotes (possibilitee A1) ou non (possibilite A2)
B) Remplacer les doubles quotes internes par simples quotes (possibilitee B1) ou par des doubles quotes protegees (possibilitee B2)
 
Ok, je viens d'essayer les quatres possibilitees resultantes et aucune ne marche:
 
A1 B1 : "Command-line error"
A1 B2 : "Command-line error"
A2 B1 : les quotes degagent dans le fichier
A2 B2 : "syntax error"
 
Donc heu... non :)


Message édité par Cytoplasm le 30-03-2009 à 14:07:08
n°1125246
fighting_f​alcon
Posté le 30-03-2009 à 16:03:52  profilanswer
 

distrib, version, ton makefile complet toussa toussa ...
 
parce que perso, Debian Lenny, avec ton makefile "minimaliste" et mes soluces ça marche

n°1125314
Cytoplasm
Posté le 30-03-2009 à 19:17:54  profilanswer
 


 
ok, en faisant des tests, je me suis rendu compte que ta version marchait sur le test mais que mon probleme etait legerement plus complique vu que il y avait une copie. Voici un exemple que j'arrive pas a faire marcher (mon main.c est n'importe quoi, en l'occurence un hello world):
 

Code :
  1. FLAGS = -O2 -D "PRINT(a)=print(a, 13)"
  2. ALLFLAGS = -msse2 ${FLAGS}
  3. all:
  4.     echo gcc ${ALLFLAGS} main.c > build.cmd
  5.     gcc ${ALLFLAGS} main.c

n°1125364
fighting_f​alcon
Posté le 31-03-2009 à 08:32:02  profilanswer
 

FLAGS = "-o2 -D 'PRINT(a)=print(a, 13)'"

n°1125380
Cytoplasm
Posté le 31-03-2009 à 09:21:49  profilanswer
 

mais heu... ca marche trop pas chez moi ca!
 

Code :
  1. echo gcc -msse2 "-O2 -D 'PRINT(a)=print(a, 13)'" main.c > build.cmd
  2. gcc -msse2 "-O2 -D 'PRINT(a)=print(a, 13)'" main.c
  3. cc1: error: invalid option argument '-O2 -D 'PRINT(a)=print(a, 13)''
  4. make: *** [all] Error 1

n°1125381
wedgeant
Da penguin inside
Posté le 31-03-2009 à 09:23:37  profilanswer
 

[:prozac]
avant de te lancer dans tout un tas de choses que tu ne connais pas correctement, je pense que tu devrais lire un peu la doc correspondant aux scripts shells et aux makefiles :o


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1125393
Cytoplasm
Posté le 31-03-2009 à 09:41:23  profilanswer
 

fighting_falcon, merci. Je viens de trouver qu'en combinant ta solution et en utilisant ". build.cmd" a la place d'appeler "gcc", ca marche nickel.
 
bonne journee a toi!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [Make + Bash] @%$# de parentheses :)

 

Sujets relatifs
[Bash] mise a jour d'une variable (string) [FOU]Petit script bash [resolu]
[bash] Extinction auto du pc si idle et eth0 non sollicité[Bash] Script de création de clés SSH automatique
(98)Address already in use: make_sock: could not bind to [RESOLU]bash : extraction de caractères
Script bash : récuperer des données dans un fichierParser basique en bash (sed ??)
Partimage coté serveur, bash: partimaged: command not foundScript bash: Permission non accordée !?
Plus de sujets relatifs à : [Make + Bash] @%$# de parentheses :)


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