La cuestión ya haya sido comunicada a la GNU hacer mantenedores:
http://savannah.gnu.org/bugs/?28230
estaba cerrado con el siguiente comentario:
Como Felipe menciona, este es el/comportamiento documentado previsto .
Recomiendo usar "incluir" en lugar de eval; haga que su script escriba un archivo, luego incluya ese archivo.
AÑADIDO: Hay una solución! He aquí una GNUmakefile muestra (reemplace 8 espacios por pestañas, sí, hay dos líneas en blanco después de define newline
):
define newline
endef
$(eval $(subst #,$(newline),$(shell { echo 'war:'; echo ' echo "not love?"'; echo ' echo "Give peace a chance!"'; } | tr '\n' '#')))
De manera más general, de que es $(eval $(subst #,$(newline),$(shell myscript | tr '\n' '#')))
Tienes que escoger un personaje que no aparece en el resultado del script; #
parece un buen candidato.
+10 si pudiera. Esa es una solución elegante y bastante portátil. –
No funciona .. _para mí_. Acabo de obtener variaciones sobre 'make:" makefile_fragment "está actualizado. –
alex gray: prueba [agregar una dependencia en el' Makefile' en sí mismo] (http://make.mad-scientist.net/constructed-include- files /) - 'makefile_fragment: $ (MAKEFILE_LIST)' – rampion