Na czym polega problem z funkcją dep2 w poniższym przykładowym kodzie?Definiowanie niestandardowych funkcji tworzenia GNU
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 i 3.82 produkować Makefile:10: *** missing separator. Stop.
co wskazuje na wezwanie dep2, dep1 prowadzony jest bez błędów. Jedyna różnica między tymi dwoma wariantami to nowe linie w dep2 (i cały punkt, dla którego chciałbym zdefiniować).
Nie, '=' jest opcjonalne (i zostało wprowadzone tylko z GNU make 3.82). Dodanie go nie ma znaczenia. –
@ g.b .: Czy próbowałeś tego? Zrobiłem (z GNU zrobić 3.81), i to miało znaczenie. Działa to zgodnie z oczekiwaniami, jeśli dodaję '='. – eriktous
@eriktous: Tak, próbowałem z 3,82. Starsze wersje po prostu całkowicie zignorują instrukcję define, jeśli po niej następuje '=', dlatego nie otrzymasz komunikatu o błędzie. –