以下示例代碼中的dep2函數有什麼問題?定義自定義GNU make函數
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使3.81和3.82產生Makefile:10: *** missing separator. Stop.
,它指向DEP2通話,DEP1無錯運行。兩個變體之間的唯一區別是dep2中的換行符(以及爲什麼我想使用define的全部觀點)。
不,「=」是可選的(並且僅在GNU make 3.82中引入)。添加它並沒有什麼區別。 –
@ g.b .:你真的嘗試過嗎?我做了(使用GNU make 3.81),它確實有所作爲。它符合我的預期,如果我添加'='。 – eriktous
@eriktous:是的,我用3.82試過。如果後面跟着一個'=',那麼舊版本會完全忽略定義語句,這就是爲什麼你沒有收到錯誤信息的原因。 –