我如何简化这些重复的 make 目标?
How do I simplify these repetitive make targets?
考虑这些目标:
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在目标、依赖项和制作目标的配方中重复。我该怎么做才能将这些规则缩减为一条规则?那么正常使用%
、$@
、@<
似乎都不适用。
编写模式规则:
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
考虑这些目标:
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在目标、依赖项和制作目标的配方中重复。我该怎么做才能将这些规则缩减为一条规则?那么正常使用%
、$@
、@<
似乎都不适用。
编写模式规则:
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