web-dev-qa-db-fra.com

Comment obtenir une variable d'environnement Shell dans un fichier makefile?

Dans Shell quand j'entre

echo $demoPath

ça imprime

/usr/local/demo

Comment puis-je obtenir la valeur de cette variable $demoPath dans un fichier makefile?

54
Jialin

Si vous avez exporté la variable d'environnement:

export demoPath=/usr/local/demo

vous pouvez simplement y faire référence par nom dans la variable makefile (make importe toutes les variables d'environnement que vous avez définies):

DEMOPATH = ${demoPath}    # Or $(demoPath) if you prefer.

Si vous n'avez pas exporté la variable d'environnement, celle-ci n'est accessible que si vous l'exportez ou si vous ne la transmettez pas explicitement à la ligne de commande:

make DEMOPATH="${demoPath}" …

Si vous utilisez un dérivé du shell C, remplacez setenv demoPath /usr/local/demo par la commande export.

86
Jonathan Leffler
all:
    echo ${PATH}

Ou changez PATH pour une seule commande:

all:
    PATH=/my/path:${PATH} cmd
1
g10guang

pour ceux qui veulent un document officiel pour confirmer le comportement

Les variables de make peuvent provenir de l'environnement dans lequel make est exécuté . Chaque variable d'environnement qui fait en sorte de voir quand elle démarre est transformé en une variable make avec le même nom et la même valeur . Cependant, une affectation explicite dans le makefile ou avec une commande argument, remplace l'environnement. (Si l’option -e est spécifiée, , Les valeurs de l’environnement remplacent les affectations du fichier makefile.

https://www.gnu.org/software/make/manual/html_node/Environment.html

0
Dyno Fu