Mephisto Posté(e) le 20 novembre 2006 Partager Posté(e) le 20 novembre 2006 Bonjour tout le monde Question existentielle pour vous : J'essai de changer le nom du programme en sortie de mon Makefile en fonction du PC ou je me trouve (genre avec un uname -s, uname -m)... mais avec NAME = monprog_'uname -m'-'uname -s', ou monprog_\'uname -m\'-\'uname -s\', ca marche pas .... des idees ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 20 novembre 2006 Partager Posté(e) le 20 novembre 2006 NAME="monprog_$(uname -m)-$(uname -s)" en haut du makefile Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 20 novembre 2006 Auteur Partager Posté(e) le 20 novembre 2006 en effet, j'aurais du y penser plus tot enfin, je viens de le tester, et ca ne marche pas non plus, pour un prog_$(uname -s)-$(uname -m), il me renvoit un prog_- ... merci quand meme pour ton aide edit: je pense qu'il ne veut pas de mes espaces ... a la fin de la compil, j'ai : ar: creating libtest_unamear: '-m-uname': No such file ar: '-s.a': No such file ranlib libtest_uname -m-uname -s.a ranlib: '-m-uname': No such file ranlib: '-s.a': No such file les backslash devant les espaces n'arrangent rien... Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 20 novembre 2006 Partager Posté(e) le 20 novembre 2006 ben redécompose : VER=$(uname -m) NAME=prog_$VER Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 20 novembre 2006 Auteur Partager Posté(e) le 20 novembre 2006 deja tente, ca marche pas :\ Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 20 novembre 2006 Partager Posté(e) le 20 novembre 2006 arf essaye NAME=prog_${uname -m} ou en décompsant. pour les commandes, c'est ${} dans un makefile Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 20 novembre 2006 Auteur Partager Posté(e) le 20 novembre 2006 non, dsl, ca ne marche toujours pas :\ j'ai aussi tente avec des $(shell uname -m) et autres ... ca veut pas ... nota, dans mon all, j'ai rajoute deux lignes pour verifier : ${uname -s} $(ARCHI) (ARCHI = shell uname -m) make: $(shell uname -s) expands to empty stringmake: $(ARCHI) expands to empty string meme ca, ca ne marche pas ... edit: j'ai tente les memes manips sous Linux, le $(shell uname -x) marche ! enfin, pas vraiment d'interet, si on ne peut pas compiler sous solaris ou unix (nb. la machine avec laquelle je travaillais tout a l'heure etait sous unix [FreeBSD]). bref, y aurait-il une commande passe-partout qui puisse m'aider ?? merci pour votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 21 novembre 2006 Partager Posté(e) le 21 novembre 2006 theocrite@copernic$ cat Makefile NAME = test_`uname -s`_`uname -m` all : echo $(NAME) theocrite@copernic$ make echo test_`uname -s`_`uname -m` test_Linux_i686 Avec une tab devant le echo, pas d'espaces surtout. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 21 novembre 2006 Auteur Partager Posté(e) le 21 novembre 2006 ca marche ! merci ! nota: pour all, un all: $(NAME) suffit merci encore Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 21 novembre 2006 Partager Posté(e) le 21 novembre 2006 theocrite@copernic$ cat Makefile NAME = test_`uname -s`_`uname -m` all : echo $(NAME) theocrite@copernic$ make echo test_`uname -s`_`uname -m` test_Linux_i686 Juste une petite remarque, la différence avec le code suivant : NAME = test_$(shell uname -s)_$(shell uname -m) all: echo $(NAME) % make echo test_Linux_i686 test_Linux_i686 C'est que pour le premier l'exécution se fait directement lors de l'exécution de la commande, alors que pour le 2ème c'est lors de l'affectation de la variable. Ça peut avoir des conséquences, au niveau des performances par exemple. (typiquement pkg-config pour plein de fichiers source) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 21 novembre 2006 Auteur Partager Posté(e) le 21 novembre 2006 autre difference, le second ne passe pas sous unix (NetBSD en tout cas) Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 21 novembre 2006 Partager Posté(e) le 21 novembre 2006 autre difference, le second ne passe pas sous unix (NetBSD en tout cas) Ça doit dépendre si on utilise gmake (GNU make) ou le make natif Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 21 novembre 2006 Partager Posté(e) le 21 novembre 2006 C'est ça, tout simplement. me@fermat$cat Makefile NAME = test_$(shell uname -m)_$(shell uname -s) all : echo $(NAME) me@fermat$ make echo test__ test__ me@fermat$ gmake echo test_i386_OpenBSD test_i386_OpenBSD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 11 janvier 2007 Auteur Partager Posté(e) le 11 janvier 2007 encore merci pour vos precedantes reponses qui ont marche si je rouvre ce topic, c'est pour une auter question: quand je fais un makefile sence compiler plusieurs programmes, le make tout court ne compile que le premier prog, tandis que toutes les autres commandes agissent bien sur les deux (make all compile bien les deux, make re aussi, ...) $(NAMES): $(OBJS) $(CC) $(OBJS) -o $(NAMES) $(NAMEC): $(OBJC) $(CC) $(OBJC) -o $(NAMEC) all: $(NAMES) $(NAMEC) clean: $(RM) $(MISC) fclean: clean $(RM) $(NAMES) $(NAMEC) re: fclean all des idees ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 11 janvier 2007 Partager Posté(e) le 11 janvier 2007 la règle par défaut est la première règle rencontrée dans le fichier makefile, c'est pourquoi on met souvent all en premier, pour que par défaut, make fasse la règle all Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 11 janvier 2007 Auteur Partager Posté(e) le 11 janvier 2007 ok, je me pends ... merci pour ton aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 12 janvier 2007 Partager Posté(e) le 12 janvier 2007 Nan, je suis d'accord, écrire un makefile c'est toujours très long/chiant/les deux. Perso, je passe toujours par des générateurs Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 13 janvier 2007 Auteur Partager Posté(e) le 13 janvier 2007 des qu'il s'agit de gros programmes, mais bon, pour l'instant, je reste sur des trucs basiques, le makefile s'ecrit en deux minutes, et je trouve toujours le moyen de laisser une erreure.. enfin, merci, pour ton aide et pour la corde Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.