Dans un (gnu)Makefile, j'ai une grosse variable, mettons $(FILELIST) qui
contient un gros tas de noms de fichiers (résultat de $(shell find)), que je
transforme avec une règle de susbitution :
NEWFILELIST = $(FILELIST:%=ailleurs/%)
Et dans une autre règle, je veux mettre tout ça dans un fichier.
Et quand ma liste devient trop grosse je me prend une erreur légitime :
make[1]: execvp: /bin/sh: Argument list too long
Et je ne sais pas comment m'en sortir :
J'ai besoin de la variable FILELIST pour vérifier les dépendances, et j'ai
besoin de son contenu dans un fichier pour le passer à java (je préprocesse
les sources avec cpp).
J'ai une solution qui est de faire une seconde fois le find, refaire ma
substitution en shell et rediriger dans le fichier. Mais bon, ça fait deux
find identiques.
Une autre solution serait de toujours faire le find vers un autre fichier, puis
mettre le contenu du fichier dans une variable, mais ça implique d'exécuter
une règle avant d'affecter une variable. Je sais pas faire.
Ou alors je me plante complètement.
J'ai pas trouvé de builtin-command de gnumake pour mettre le contenu d'une
variable dans un fichier.
Si qqun à une idée je suis preneur. En attendant je vais faire deux find...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Gaborit
À (at) 12 Apr 2006 19:09:20 GMT, david écrivait (wrote):
Dans un (gnu)Makefile, j'ai une grosse variable, mettons $(FILELIST) qui contient un gros tas de noms de fichiers (résultat de $(shell find)), que je transforme avec une règle de susbitution :
NEWFILELIST = $(FILELIST:%=ailleurs/%)
Et dans une autre règle, je veux mettre tout ça dans un fichier.
Et quand ma liste devient trop grosse je me prend une erreur légitime :
make[1]: execvp: /bin/sh: Argument list too long
Et je ne sais pas comment m'en sortir :
Peut-être en utilisant les cibles .PHONY :
.PHONY: fairefichier $(NEWFILELIST)
fairefichier: $(NEWFILELIST)
$(NEWFILELIST): @echo $@ >> fichier
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
À (at) 12 Apr 2006 19:09:20 GMT,
david <deyv@free.fr> écrivait (wrote):
Dans un (gnu)Makefile, j'ai une grosse variable, mettons $(FILELIST) qui
contient un gros tas de noms de fichiers (résultat de $(shell find)), que je
transforme avec une règle de susbitution :
NEWFILELIST = $(FILELIST:%=ailleurs/%)
Et dans une autre règle, je veux mettre tout ça dans un fichier.
À (at) 12 Apr 2006 19:09:20 GMT, david écrivait (wrote):
Dans un (gnu)Makefile, j'ai une grosse variable, mettons $(FILELIST) qui contient un gros tas de noms de fichiers (résultat de $(shell find)), que je transforme avec une règle de susbitution :
NEWFILELIST = $(FILELIST:%=ailleurs/%)
Et dans une autre règle, je veux mettre tout ça dans un fichier.