[Makefile] makefile et bash

Résolu/Fermé
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 - 11 juil. 2008 à 18:26
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 25 juil. 2009 à 23:51
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 ?

10 réponses

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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
11 juil. 2008 à 18:43
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 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 68
11 juil. 2008 à 18:58
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
12 juil. 2008 à 00:55
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 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 68
12 juil. 2008 à 07:26
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
12 juil. 2008 à 14:10
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 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 68
12 juil. 2008 à 16:26
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 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 68
13 juil. 2008 à 08:19
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
25 juil. 2009 à 23:30
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
25 juil. 2009 à 23:46
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
25 juil. 2009 à 23:51
soit la version de dubcek donné un an plus tôt ^^.
0