Re: Makefile & Bash

Top Page

Reply to this message
Author: Philippe B
Date:  
To: Edgar Bonet, guilde
Subject: Re: Makefile & Bash
Finalement, j'ai continué à fouiller dans tous les sens, et j'avoue, ca
marche super :) après tout ca, j'ai fait un rpm sympa, et hop, 2 commandes
pour installer un superbe apache !!! le pied !!!

Merci à tous pour votre aide !!

Philippe


----- Original Message -----
From: "Edgar Bonet" <guilde@???>
To: <guilde@???>
Sent: Sunday, November 24, 2002 4:39 PM
Subject: Re: Makefile & Bash


> Le dimanche 24 novembre, Xavier Sirvent a écrit :
> > Le makefile suivant marche trés bien:
> > install:
> >     tar zxvf toto.tar.gz;\
> >     ls -la
> > Note qu'il y a une tabulation en debut de deuxième ligne
> > Le principe, c'est que tu n'as en fait qu'unse seule commande séparée
> > par des ;

>
> Tu n'est pas du tout limité à une seule commande, tu peux en mettre
> autant que tu veux dans une règle de Makefile. Essaye ça par exemple :
>
> install:
> echo "Première commande"
> echo "Deuxième commande"
> echo "Troisième commande"
>
> > Pour plus de propreté, je les mets sur des lignes séparées avec \
>
> Ce n'est utile que si tu veux écrire _une_ commande sur plusieurs
> lignes. Par exemple :
>
> install:
> if [ -d toto ]; then \
> echo "Le répertoire toto existe déjà"; \
> else \
> tar xzfv toto.tar.gz; \
> fi
> cd toto; \
> ls -la
>
> Ici il y a deux commandes. Le groupe if... then... else... fi est une
> commande. Tu ne peux pas le séparer en plusieurs commandes car ça ne
> ferait pas de sens syntaxiquement pour bash. La paire (cd toto; ls -la)
> est une deuxième commande. Si tu la sépares en deux commandes, le ls se
> fera dans le répertoire courant et non dans toto.
>
> Ce qu'il faut comprendre c'est que chaque commande que lance make est
> lancée dans son propre shell (via /bin/sh -c commande). C'est pour ça
> que des commandes incomplètes (if sans fi par exemple) ne font pas de
> sens. C'est aussi pour ça que l'effet de la commande cd se limite au
> shell dans lequel cette commande a été lancée.
>
> Edgar.
>
> --
> Edgar Bonet                         Tél    : 04 76 88 10 96
> Laboratoire Louis Néel -- CNRS      Mobile : 06 77 19 79 39
> 25 av. des Martyrs, BP 166          Fax    : 04 76 88 11 91
> 38042 Grenoble cedex 9, France      e-mail : guilde@???

>