Journal Prob avec makefile

Posté par  .
Étiquettes : aucune
0
17
déc.
2003
Ptite question car je deviens fou. J'ai pris un makefile simplifie pour expliquer :

NAME=test_`uname -m`-`uname -s`
all :$(NAME)
$(NAME) :
echo "test"

Bon, ca va ptet mal passer, mais le echo est dans la regle $(NAME).
Avec les backquotes la regle $(NAME) est executee 3 fois, si je vire l'un des 2 executions, ca ne le sera que 2 fois.
Question, comment on fait pour que ca ne le fasse qu'une seule fois comme ca devrait ?
  • # Re: Prob avec makefile

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    J'ai tellement de m** dans les yeux que je n'arrive pas à lire ton journal. Mais ça fait plaisir que je suis pas le seul à finir un projet dans l'urgence à 3h du mat :-)

    Bon courage !

    (pour info, mon projet doit être rendu pour hier minuit !)

    Mes livres CC By-SA : https://ploum.net/livres.html

  • # Re: Prob avec makefile

    Posté par  (site web personnel, Mastodon) . Évalué à 2.

    vla une solution....

    ARG1=$(shell uname -m)
    ARG2=$(shell uname -s)
    NAME="test_$(ARG1)-$(ARG2)"
    all :$(NAME)
    $(NAME) :
    @echo $(NAME)

    le arrobase supprime l'affichage de la commande qui va être éxécutée....

    voila, voilà

    M.
  • # Re: Prob avec makefile

    Posté par  . Évalué à 3.

    Make lit tes ` comme des caractère normaux. Quand tu définis ta variable NAME, il considère que tu lui affecte trois mots séparés par des espaces : "test_`uname", "-m`-`uname", et "-s".

    Comme ces trois mots apparaissent ensuite comme trois cibles différentes, il exécute les trois cibles.

    Tout ce passe comme si tu avais écrit:

    NAME = a b c
    all: a b c
    a b c:
    echo "test"

    Pour qu'il fonctionne correctement, il faut écrire:

    NAME = test_$(shell uname -m)-$(shell uname -s)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.