我喜歡Dylan給出的問題,「在Makefiles中對列表進行迭代」, Iterating over lists in Makefiles?並試圖做類似的事情,但遇到了麻煩。也許sonmeone可以提供幫助。在Makefiles中重複使用列表 -
我的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_tmpset_global -name PARTITION_NAME喬
set_global -color PARTITION_COLOR紅色
-name PARTITION_NAME Joe @echo in print_tmp
set_global -name PARTITION_NAME卡爾:瑪麗
set_global -color PARTITION_COLOR白色-name PARTITION_NAME卡爾:瑪麗 @echo在print_tmp
set_global -name PARTITION_NAME弗裏茨
set_global -color PARTITION_COLOR藍色 - name PARTITION_NAME Fritz
我不明白爲什麼我在第一個結尾處得到「print_tmp中的@echo」兩次調用print_tmp(或者它可能是最後兩次調用print_tmp的開始?)
有人可以幫忙嗎?
謝謝, 馬克
很好的例子。謝謝! – 2013-03-22 13:27:13