我只需要在決定執行更新目標的命令時分配xpi_hash
變量。然後我使用這個變量作爲環境,導出等。Makefile:在目標命令行中分配函數變量
如果我把它放在規則之外,它會被首先展開,在調用$(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) $< > [email protected]
以上當然是不正確的,因爲對於命令部分來說shell是表示的。所以也許另一種解決這個問題的方法是 - 如何將變量作爲命令輸出?
@Scott:我出口'xpi_hash'在Perl命令後使用它。我嘗試了'=',它有所不同,但仍在$(xpi)目標之前調用,所以'sha1sum'永遠不能找到xpi文件......希望現在清楚。 – Pablo 2010-05-06 03:38:27
嘗試將'substitute'定義更改爲'substitute = xpi_hash =「$(xpi_hash)」perl -p -e's/@([^ @] +)@/$$ ENV {$$ 1} bla bla ... '',它明確地將xpi_hash添加到perl命令的環境中。 – 2010-05-06 03:43:40
可否請你給我一些關於'='的參考章節以及將變量導出到環境的替代機制? – Pablo 2010-05-06 04:22:29