[Makefile] makefile et bash

Résolu
Sri Lumpa Messages postés 177 Statut Membre -  
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,

Je cherche à définir dans un makefile une variable que je peux obtenir (normalement) grâce à une commande bash. Malheureusement, il n'est pas possible d'exécuter ce genre de commande dans un makefile. Etant pas très pro en makefile, je sais pas trop comment m'en sortir.

Bêtement j'aimerais pouvoir intialiser une variable dans mon makefile de la même manière que si je faisais
VAR=$(ma_commande)
dans un shell.

Quelqu'un a-t-il une solution ?
A voir également:

10 réponses

Gus
 
Sinon, pour ceux que ca interesse, il est possible d'initialiser une variable d'un Makefile avec le resultat d'un script shell avec la construction $(shell ...)

Par example, pour que la variable FILES contiennent tous les fihier .suf du repertoire monRep:
FILES = $(shell find monRep -name *.suf -printf "%f ")

Il est meme possible de faire des pipes:
FILES = $(shell find monRep -name *.suf -printf "%f " | sed "s/.suf/.fus/g")
3
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Salut,
Initialiser une variable en makefile se fait comme ceci : CC=gcc par exemple.
Son utilisation $(CC)

Cdt
0
Sri Lumpa Messages postés 177 Statut Membre 69
 
Oui, ça je sais mais quand il s'agit de récupérer le résultat d'une commande bash ? En gros, je fais
LIBTIFF = $(dirname $(find / -name libtiff.a))

et il me retourne toujours LIBTIFF comme étant vide (pourtant je sais que la commande retourne /usr/lib). J'ai parcouru rapidement le web, et il semblerait qu'il ne soit pas possible de lancer des commandes bash dans un Makefile. Je sais pas comment contourner le problème.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Re,
Je ne pense pas que ce soit possible. Mais je n'en vois pas l'utilité. Autant faire directement un script en bash non ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sri Lumpa Messages postés 177 Statut Membre 69
 
En fait je cherche à recréer un package .deb en ajoutant une option au moment de la configuration. Comme le fichier debian/rules et considérer comme un makefile, je voulais faire cette petite modif dedans.
Je suis en train de me dire que c'est pas comme ça que je devrais faire mais je vois pas d'autre méthode :(
0
dubcek Messages postés 19021 Statut Contributeur 5 637
 
hello
pour configurer il y a un script, non ?
dans le script mettre, avant le make
LIBTIFF = $(dirname $(find / -name libtiff.a)) ; export LIBTIFF
et dans la makefile appeller
$(LIBTIFF)
0
Sri Lumpa Messages postés 177 Statut Membre 69
 
Je dois pas m'y prendre de la bonne façon...

ce que je souhaites faire, c'est dans le fichier des règles de compilation du paquet (debian/rules), c'est ajouter au moment de la configuration du paquet (c'est à dire du lancement du script configure) l'option --with-libtif=... pour que quand on fasse un apt-get install mon_paquet, la configuration se fasse automatiquement avec cette option.

Au fond, je dois probablement pas bien comprendre comment bien réaliser les règles de création de paquets Debian :s
0
Sri Lumpa Messages postés 177 Statut Membre 69
 
Bon c'est réglé, j'ai plus ou moins suivi vos conseils en créant un script bash qui me fait ma config générale te que j'appelle au moment du build.
En tout cas, merci de votre aide.
0
chepasquietjemenfous
 
salut
je sais que la reponse arrive tres tardivement mais bon si qqn tombe dessus il pourra avancer un peu.

il semblerait que la seule solution soit celle des vieux bash
utilisation des `cmd`

donc ca donnerais
LIBTIFF=`dirname $(find / -name libtiff.a)`
0
chepasquietjemenfous
 
re la solution officiel

est de faire
LIBTIFF=$(shell dirname $(find / -name libtiff.a)

(desole je n'ai pas reussit a modifier mon post precedent)
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
soit la version de dubcek donné un an plus tôt ^^.
0