Ich versuche, einige Umgebungsvariablen in ein Makefile aufzunehmen. Die env-Datei sieht folgendermaßen aus:
FOO=bar
BAZ=quux
Beachten Sie, dass nicht export
zu jeder Umgebungsvariable ein Hinweis führt . Wenn ich die führende export
und nur include
die env-Datei im Makefile hinzufüge , funktioniert alles wie es sollte. Aber ich muss das env vars sans in Führung halten export
. Das hindert mich daran, nur include envfile
das Makefile zu benutzen .
Ich habe auch versucht, so etwas zu tun:
sed '/^#/!s/^/export /' envfile > $(BUILDDIR)/env
include $(BUILDDIR)/env
Aber wenn du das machst, löst das einen Fehler aus, weil die env-Datei nicht zum Einschließen da ist.
environment-variables
make
Michael Irwin
quelle
quelle
Antworten:
Wenn Sie gnu make verwenden, sollte es funktionieren, die
envfile
Datei einzuschließen und dann die Liste der Variablen zu exportieren, die aus derselben Datei stammen:quelle
export $(shell...
Leitung funktioniert . Ich brauche nur dieinclude
Leitung.Ich hatte ein ähnliches Problem und bin auf diesem Thread gelandet. Eine andere mögliche Lösung besteht darin, den Befehl make export ohne Argumente auszuführen:
Dadurch werden alle make-Variablen als Umgebungsvariablen exportiert. Dieses Verhalten stimmt möglicherweise nicht mit allen Anwendungsfällen überein, funktionierte jedoch für mich und beinhaltete keine Assistenten für Shell-Skripte.
quelle
Behält bereits vorhandene ENV-Versionen bei
Zu rennen
quelle
Hier ist eine elegante Lösung, die keine Make-Vars importiert, sondern Umgebungsexporte für Shell-Unterprozesse festlegt. Ich persönlich bevorzuge es, die dynamischen Skripte meines Profils beizubehalten.
Es gibt einige Fallstricke. Leider funktioniert ENV nicht, ich denke es sollte (aber das ist ein Problem mit Bash, nicht Make). Außerdem wird wirklich eine andere Zeile benötigt, da der Standard-Shell-Interpreter von Make / bin / sh ist.
Auf der Oberseite erlaubt dies auch die Einbindung von Shell-Funktionen in Makefile-Skripte, jedoch nur für die Rezept-Skripte. Ich weiß nicht, wie es mit anderen Muscheln als Bash weitergeht. Und da ist noch ein bisschen mehr los. Ich habe ein Testfile als GIST erstellt .
Es sind viele komplizierte Shell-Skripte denkbar. Diese Frage / Antwort gefällt mir am besten für die einfachen Antworten.
quelle
Wenn Ihr Dateiname so ist
.makerc
, können Sie ihn so einfach wie folgt in Makefile einfügen:Ich bevorzuge es,
-
vorher ein Zeichen hinzuzufügeninclude
, um etwaige Warnungen zu unterdrücken.quelle