¿Cuál es el problema con la función dep2 en el código de ejemplo siguiente?Definición de funciones de creación de GNU personalizadas
dep1 = $(eval makefile_list_$1 := $(MAKEFILE_LIST))$(eval -include $1.mk)$(eval MAKEFILE_LIST := $(makefile_list_$1))
define dep2
$(eval makefile_list_$1 := $(MAKEFILE_LIST))
$(eval -include $1.mk)
$(eval MAKEFILE_LIST := $(makefile_list_$1))
endef
$(call dep1,test)
$(call dep2,test)
.DEFAULT_TARGET: all
.PHONY: all
all:
@echo [email protected]
GNU make 3,81 y 3,82 producir Makefile:10: *** missing separator. Stop.
que apunta a la llamada DEP2, DEP1 se ejecuta sin errores. La única diferencia entre las dos variantes son las nuevas líneas en dep2 (y todo el punto por el que me gustaría usar define).
No, el '=' es opcional (y solo se introdujo con GNU make 3.82). Agregarlo no hace la diferencia. –
@ g.b .: ¿Realmente lo has intentado? Lo hice (con GNU make 3.81), y sí marcó la diferencia. Funciona según lo esperado para mí, si agrego el '='. – eriktous
@eriktous: Sí, lo intenté con 3.82. Las versiones anteriores simplemente ignorarán por completo la declaración de definición si está seguida por un '=', que es la razón por la cual no aparece el mensaje de error. –