我知道规则语法应采用以下格式:
targets : prerequisites
recipe
…
但是,我在slave.mk中看到以下代码段。
$(addprefix $(DEBS_PATH)/, $(SONIC_COPY_DEBS)) : $(DEBS_PATH)/% : .platform
$(HEADER)
$(foreach deb,$* $($*_DERIVED_DEBS), \
{ cp $($(deb)_PATH)/$(deb) $(DEBS_PATH)/ $(LOG) || exit 1 ; } ; )
$(FOOTER)
第一行中有两个':'。为什么?
这是Static Pattern Rules的语法:
静态模式规则是指定多个目标并根据目标名称构造每个目标的必备名称的规则。它们比具有多个目标的普通规则更具通用性,因为目标不必具有相同的先决条件。它们的前提条件必须相似,但不一定相同。
这是静态模式规则的语法:
targets …: target-pattern: prereq-patterns … recipe …
targets
列表指定规则适用的目标。