考虑这些目标:
test/masterfiles/efl_data/efl_class_cmd_regcmp.json: \
test/masterfiles/efl_data/efl_class_cmd_regcmp.csv
$(CSVTOJSON) -b efl_class_cmd_regcmp < $< > $@
test/masterfiles/efl_data/efl_class_returnszero.json: \
test/masterfiles/efl_data/efl_class_returnszero.csv
$(CSVTOJSON) -b efl_class_returnszero < $< > $@
test/masterfiles/efl_data/efl_class_expression.json: \
test/masterfiles/efl_data/efl_class_expression.csv
$(CSVTOJSON) -b efl_class_expression < $< > $@
模式efl_class_ some_word 在目标,依赖关系和制作目标的配方中重复。我可以做些什么来将这些规则简化为单一规则?然后正常使用%
,$@
和@<
似乎不适用。
答案 0 :(得分:2)
编写模式规则:
EFL_PARTS = cmd_regcmp returnszero expression
EFL_DIR = test/masterfiles/efl_data
$(EFL_DIR)/%.json: $(EFL_DIR)/%.csv
$(CSVTOJSON) -b $* < $< > $@
all: $(patsubst %,$(EFL_DIR)/efl_class_%.json,$(EFL_PARTS))
.PHONY: all