匹配路径中的 %
Matching % in a path
我怎样才能像这样进行目标匹配:
efl_class_bundles = \
efl_class_returnszero \
efl_class_cmd_regcmp \
efl_class_expression
.PHONY: $(efl_class_bundles)
$(efl_class_bundles): version syntax \
test/$@/efl_main.json \
test/$@/01_$@.json \
test/$@/02_efl_test_simple.json
prove t/efl_class_$@_csv.t
prove t/efl_class_$@_json.t
test/%/efl_main.json: test/%/efl_main.csv
$(CSVTOJSON) -b efl_main < $< > $@
perl -pi -e 's/csv/json/' $@
当我尝试 'make efl_class_returnszero' 时出现以下错误,这表明先决条件 test/$@/efl_main.json 无法匹配目标 'test/%/efl_main.json' Han 我可以做这个吗工作?
prove t/00_version.t
t/00_version.t .. ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.03 usr 0.00 sys
Result: PASS
prove t/01_syntax.t
t/01_syntax.t .. ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.02 usr 0.00 sys
Result: PASS
make: *** No rule to make target 'test//efl_main.json', needed by
'efl_class_returnszero'. Stop.
您不能在先决条件列表中使用像 $@
这样的自动变量。它们通常只在食谱中可用。请参阅手册中的 automatic variables。
如果需要,您可以启用secondary expansion;您的规则将如下所示:
.SECONDEXPANSION:
(efl_class_bundles): version syntax \
test/$$@/efl_main.json \
test/$$@/01_$$@.json \
test/$$@/02_efl_test_simple.json
prove t/efl_class_$@_csv.t
prove t/efl_class_$@_json.t
我怎样才能像这样进行目标匹配:
efl_class_bundles = \
efl_class_returnszero \
efl_class_cmd_regcmp \
efl_class_expression
.PHONY: $(efl_class_bundles)
$(efl_class_bundles): version syntax \
test/$@/efl_main.json \
test/$@/01_$@.json \
test/$@/02_efl_test_simple.json
prove t/efl_class_$@_csv.t
prove t/efl_class_$@_json.t
test/%/efl_main.json: test/%/efl_main.csv
$(CSVTOJSON) -b efl_main < $< > $@
perl -pi -e 's/csv/json/' $@
当我尝试 'make efl_class_returnszero' 时出现以下错误,这表明先决条件 test/$@/efl_main.json 无法匹配目标 'test/%/efl_main.json' Han 我可以做这个吗工作?
prove t/00_version.t
t/00_version.t .. ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.03 usr 0.00 sys
Result: PASS
prove t/01_syntax.t
t/01_syntax.t .. ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.02 usr 0.00 sys
Result: PASS
make: *** No rule to make target 'test//efl_main.json', needed by
'efl_class_returnszero'. Stop.
您不能在先决条件列表中使用像 $@
这样的自动变量。它们通常只在食谱中可用。请参阅手册中的 automatic variables。
如果需要,您可以启用secondary expansion;您的规则将如下所示:
.SECONDEXPANSION:
(efl_class_bundles): version syntax \
test/$$@/efl_main.json \
test/$$@/01_$$@.json \
test/$$@/02_efl_test_simple.json
prove t/efl_class_$@_csv.t
prove t/efl_class_$@_json.t