Das Thema wurde bereits auf die GNU berichtet machen Maintainer:
http://savannah.gnu.org/bugs/?28230
Es wurde mit dem folgenden Kommentar:
Als Philip erwähnt, ist dies die beabsichtigte/dokumentierte Verhalten .
Ich empfehle die Verwendung von "include" statt eval; Lassen Sie Ihr Skript eine Datei schreiben und fügen Sie diese Datei hinzu.
ADDED: Es gibt eine Abhilfe! Hier ist ein Beispiel GNUmakefile (ersetzen 8 Leerzeichen durch Tabulatoren, ja, gibt es zwei leere Zeilen nach define newline
):
define newline
endef
$(eval $(subst #,$(newline),$(shell { echo 'war:'; echo ' echo "not love?"'; echo ' echo "Give peace a chance!"'; } | tr '\n' '#')))
Allgemeiner gesagt, das ist $(eval $(subst #,$(newline),$(shell myscript | tr '\n' '#')))
Sie haben ein Zeichen wählen, die nicht angezeigt wird die Ausgabe des Skripts; #
scheint ein guter Kandidat zu sein.
+10 wenn ich könnte. Das ist eine elegante und tragbare Lösung. –
Funktioniert nicht .. _für mich_. Ich bekomme nur Variationen über 'make:" makefile_fragment "ist auf dem neuesten Stand. –
alex grey: probiere [eine Abhängigkeit vom Makefile selbst] (http://make.mad-scientist.net/constructed-include-) files /) - 'makefile_fragment: $ (MAKEFILE_LIST)' – rampion