Я не уверен, что именно вы ищете здесь, как вы планируете использовать xpi_hash
?Если вы хотите получать текущий хеш каждый раз, когда используете переменную, используйте =
для назначения переменной вместо :=
, например,
xpi_hash=$(shell sha1sum $(xpi) | grep -Eow '^[^ ]+')
update:$(xpi) $(target_update_rdf)
@echo $(xpi_hash)
напечатает хеш xpi
после того, как онаобновлено.
Переменные в make
см. , раздел 6.2 руководства.Вкратце ': =' расширит переменные справа, '=' оставит их для последующего расширения.
Измененная команда в моем комментарии (substitute = xpi_hash="$(xpi_hash)" perl -p -e 's/@([^@]+)@/$$ENV{$$1}...'
) будет расширена, чтобы быть эквивалентной
$(substitute)
xpi_hash="$(xpi_hash)" perl -p -e 's/@([^@]+)@/$$ENV{$$1}...'
xpi_hash="`sha1sum $(xpi) | grep -Eow '^[^ ]+'`" perl -p -e 's/@([^@]+)@/$$ENV{$$1}...'
xpi_hash="`sha1sum xpi_expansion | grep -Eow '^[^ ]+'`" perl -p -e 's/@([^@]+)@/$$ENV{$$1}...'
Синтаксис xpi_hash="..."
определяет переменную в подоболочке bash, а не использует переменную в make.