Wie der untergeordnete Prozess " Umwelt-Variablen im Makefile
Möchte ich dies ändern Makefile:
SHELL := /bin/bash
PATH := node_modules/.bin:$(PATH)
boot:
@supervisor \
--harmony \
--watch etc,lib \
--extensions js,json \
--no-restart-on error \
lib
test:
NODE_ENV=test mocha \
--harmony \
--reporter spec \
test
clean:
@rm -rf node_modules
.PHONY: test clean
zu:
SHELL := /bin/bash
PATH := node_modules/.bin:$(PATH)
boot:
@supervisor \
--harmony \
--watch etc,lib \
--extensions js,json \
--no-restart-on error \
lib
test: NODE_ENV=test
test:
mocha \
--harmony \
--reporter spec \
test
clean:
@rm -rf node_modules
.PHONY: test clean
Leider ist die zweite nicht funktioniert (der node-Prozess läuft noch mit der Standard -NODE_ENV
.
Hab ich was verpasst?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Make-Variablen werden nicht exportiert in die Umwelt Prozesse machen ruft... standardmäßig. Aber Sie können machen
export
Sie zu zwingen, dies zu tun. Ändern:zu diesem:
(vorausgesetzt Sie haben eine ausreichend moderne version von GNU-make).
all: <\n\t>export PROJ_ROOT=$(CURDIR)<\n\t>echo $(PROJ_ROOT)<\n>
Ausgänge die korrekte Erweiterung für die erste Zeile, aber nurecho
für die zweite.PROJ_ROOT
ist nicht festgelegt, nach der Ausführung machen. Leerzeichen um=
geben, "bad variable name" für den export. Mit der ersten Zeile als Voraussetzung, wie in Ihrem Beispiel gibt "Befehle beginnen vor dem ersten Ziel"all:
, die nicht in meinem Beispiel. Mein Beispiel verwendet werden soll, wie geschrieben: es ist die Definition einer target-specific variable NICHT hinzufügen eines Befehls zu dem Rezept. Auch Sie können ein Rezept und eine target-spezifische variable auf ein Ziel in der gleichen Zeit: Sie haben zu schreiben, das Ziel zweimal. Siehe das zweite Beispiel in der Frage und eine neue Frage stellen wenn das nicht hilft, erklären: es gibt nicht genug Platz oder die Formatierung in den Kommentaren.Als MadScientist hingewiesen, exportieren Sie können einzelne Variablen mit:
Oder export-Variablen für ein bestimmtes Ziel (target-spezifische Variablen):
Können Sie auch die
.EXPORT_ALL_VARIABLES
Ziel—Sie erraten es!—EXPORT ALLER DINGE!!!:sehen .EXPORT_ALL_VARIABLES
MY_VAR
s: die eine ist die makefile-variable zugegriffen, als${MY_VAR}
andere ist bash exportiert variable zugegriffen, als$$MY_VAR
Brauchte ich nur die Umgebungsvariablen lokal aufrufen meiner test-Befehl, hier ist ein Beispiel für die Einstellung mehrere environment-vars in einer bash-shell, und die Flucht aus dem dollar-Zeichen in
make
.