[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] Makefile



Jean-Michel OLTRA wrote:
> J'essaie de faire un Makefile en redéfinissant une variable dans une
> cible:
> 
> DESTDIR = /chemin/par/defaut
> 
> install:
>     commandes vers $(DESTDIR)
> 
> install-ailleurs: DESTDIR = /autre/chemin
>     $(MAKE) install

Tu ne peux pas définir une variable et de commandes en même temps. Il
faut le faire en deux fois :
install-ailleurs: DESTDIR=/autre/chemin
install-ailleurs:
        $(MAKE) install

Par contre, si cette syntaxe est valide, elle ne fera pas ce que tu
veux : DESTDIR n'est redéfini que pour la commande associé à la cible
courante (install-ailleurs) et pas pour l'invocation récursive du
Makefile. On voit mieux ce qui ce passe avec :
DESTDIR=/global
install:
        echo installation dans DESTDIR=$(DESTDIR)
install-ailleurs: DESTDIR=/autre/chemin
install-ailleurs:
        echo redéfinition DESTDIR=$(DESTDIR)
        $(MAKE) install

La bonne solution est bien, comme il te l'a été indiqué dans d'autres
messages, de passer en argument de make la définition de ta variable
DESTDIR (comme ça, il ignore ce qu'il trouve dans le Makefile)
  Ce mécanisme permet de faire des trucs du genre :
./configure --prefix=$HOME/usr
make
make install prefix=$HOME/usr/stow/monlogiciel-version

Évidemment, si le Makefile a des trucs bizarres (utilisation de
override, $(origin ), ...), ce genre de manip peut ne pas marcher.

  A+
    Vince



Reply to: