J'essaie d'inclure des vars env dans un Makefile. Le fichier env ressemble à:
FOO=bar
BAZ=quux
Notez qu'il n'y a aucun conduit export
à chaque var env. Si j'ajoute le premier export
et juste include
le fichier env dans le Makefile, tout fonctionne comme il se doit. Mais je dois garder l'env vars sans leader export
. Cela m'empêche de simplement utiliser include envfile
dans le Makefile.
J'ai aussi essayé de faire quelque chose comme ça:
sed '/^#/!s/^/export /' envfile > $(BUILDDIR)/env
include $(BUILDDIR)/env
Mais faire cela cause faire une erreur car le fichier env n'est pas là pour l'inclure.
environment-variables
make
Michael Irwin
la source
la source
Réponses:
Si vous utilisez gnu make, ce qui devrait fonctionner est d'inclure le
envfile
fichier, puis d'exporter la liste des vars obtenues à partir du même fichier:la source
export $(shell...
ligne. J'ai juste besoin de lainclude
ligne.J'ai eu un problème similaire et j'ai atterri sur ce fil. Une autre solution possible consiste à simplement exécuter la commande make export sans aucun argument:
Cela exportera toutes les variables make en tant que variables d'environnement. Ce comportement peut ou non correspondre à tous les cas d'utilisation, mais il a fonctionné pour moi et n'a impliqué aucune sorcellerie de script shell.
la source
Préserve les vars ENV existants
Courir
la source
Voici une solution élégante qui n'importe pas Make vars, mais définit toutes les exportations d'environnement pour les sous-processus shell. Personnellement, je préfère conserver les scripts dynamiques de mon profil.
Il y a quelques pièges. Malheureusement ENV ne fonctionne pas, je pense qu'il devrait (mais c'est un problème avec Bash, pas Make). De plus, cela nécessite vraiment une autre ligne, car l'interpréteur de commandes par défaut de Make est / bin / sh.
À la hausse, cela permet également d'inclure des fonctions shell dans les scripts Makefile, mais uniquement pour les scripts de recette. Je ne sais pas comment d'autres coquilles que le tarif Bash. Et il se passe un peu plus. J'ai mis un fichier de test sous GIST .
Il existe de nombreux scripts shell complexes imaginables. J'aime mieux cette Q / A pour les réponses simples.
la source
si votre nom de fichier est
.makerc
alors vous pouvez l'inclure dans Makefile aussi simple que ceci:Je préfère ajouter un
-
signe avantinclude
, pour supprimer les avertissements.la source