Чтобы получить часть имени файла имени цели в командах правила %.tar.bz2
, вы можете использовать функцию notdir или переменную $ (@ D) .
Действительно, вы должны сделать так, чтобы имя цели соответствовало выходному файлу, чтобы make
мог проверять наличие файла и не пытался загружать его заново при каждом запуске. Простой способ сделать это будет
source=somefile.tar.bz2
.PHONY: download
download: $(source)
%.tar.bz2:
@wget "http://example.net/$@"
или, если у вас есть разные исходные архивы для загрузки из разных мест (что, я думаю, вы делаете, иначе зачем вообще использовать шаблонное правило?), Вы можете использовать переменную, специфичную для цели , чтобы сохраните URL-адрес для загрузки, например
source=somefile.tar.bz2 some-other-file.tar.bz2
somefile.tar.bz2: URL=http://example.net
some-other-file.tar.bz2: URL=http://example.org/foobar
.PHONY: download
download: $(source)
%.tar.bz2:
@wget "$(URL)/$@"