Aller au contenu

[RESOLU] Makefile


Mephisto

Messages recommandés

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

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_uname

ar: '-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

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 string

make: $(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 :yes:

Lien vers le commentaire
Partager sur d’autres sites

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

  • 1 mois après...

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...