我喜欢 Dylan 对“迭代 Makefile 中的列表”、 迭代 Makefile 中的列表的问题的回答?并尝试做类似的事情,但遇到了麻烦。也许儿子可以帮忙。
我的Makefile:
PARTITION_TMP:=Joe|red \
Carl:Mary|white \
Fritz|blue
partition_tmp:
@- $(foreach partition_tmp,$(PARTITION_TMP), \
$(eval N = $(word 1, $(subst |, ,$(partition_tmp)))) \
$(eval C = $(word 2, $(subst |, ,$(partition_tmp)))) \
$(call print_tmp, $N, $C) \
)
define print_tmp
@echo in print_tmp
@echo set_global -name PARTITION_NAME $(1)
@echo set_global -color PARTITION_COLOR $(2) -name PARTITION_NAME $(1)
endef
当我运行 make 时,我得到以下信息:
在 print_tmp
set_global -name PARTITION_NAME 乔
set_global -color PARTITION_COLOR red -name PARTITION_NAME Joe @echo in print_tmp
set_global -name PARTITION_NAME 卡尔:玛丽
set_global -color PARTITION_COLOR white -name PARTITION_NAME Carl:Mary @echo in print_tmp
set_global -name PARTITION_NAME 弗里茨
set_global -color PARTITION_COLOR 蓝色 -name PARTITION_NAME Fritz
我不知道为什么我在前两次调用 print_tmp 结束时得到“@echo in print_tmp”(或者可能是最后两次调用 print_tmp 的开始?)
有人可以帮忙吗?
谢谢,马克