xpi_hash
只有在决定执行更新目标的命令时才需要分配变量。然后我将此变量用作环境、导出等。
如果我把它放在规则之外,它会在$(xpi)
调用目标之前首先被扩展,因此不会找到那个文件。
substitute := perl -p -e 's/@([^@]+)@/$$ENV{$$1} bla bla...
export xpi_hash
.PHONY: dirs substitute update
update: $(xpi) $(target_update_rdf)
xpi_hash := $(shell sha1sum $(xpi) | grep -Eow '^[^ ]+')
@echo "Updating..."
$(target_update_rdf): $(update_rdf)
$(substitute) $< > $@
以上当然是不正确的,因为对于命令部分,shell 是代表的。所以也许提出这个问题的另一种方式是 - 如何将变量作为命令输出?