Posez votre question Signaler

[Makefile] makefile et bash [Résolu]

Sri Lumpa 177Messages postés 14 novembre 2007Date d'inscription 1 juin 2010Dernière intervention - Dernière réponse le 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 ?
Lire la suite 

[Makefile] makefile et bash »

11 réponses
Réponse
+3
moins plus
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")
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
Initialiser une variable en makefile se fait comme ceci : CC=gcc par exemple.
Son utilisation $(CC)

Cdt
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
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 :(
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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)`
Ajouter un commentaire
Réponse
+0
moins plus
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)
fiddy- 25 juil. 2009 à 23:51
soit la version de dubcek donné un an plus tôt ^^.
Ajouter un commentaire
Ce document intitulé « [Makefile] makefile et bash » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?