「Makefilesのリストを反復処理する」、Makefilesのリストを反復処理するという質問に対するDylanの回答が気に入りました 。似たようなことをしようとしましたが、問題があります。おそらくsonmeoneが助けになるでしょう。
私の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 Joe
set_global -color PARTITION_COLOR red -name PARTITION_NAME Joe @echo in print_tmp
set_global -name PARTITION_NAME Carl:Mary
set_global -color PARTITION_COLOR white -name PARTITION_NAME Carl:Mary @echo in print_tmp
set_global-namePARTITION_NAMEフリッツ
set_global -color PARTITION_COLOR blue-namePARTITION_NAMEフリッツ
print_tmpへの最初の2回の呼び出しの最後に「@echoinprint_tmp」が表示される理由がわかりません(または、print_tmpへの最後の2回の呼び出しの最初ですか?)
誰かが助けることができますか?
ありがとう、マーク