Утилита make
не имеет встроенной поддержки загрузки (даже не в GNU, в которую иногда вбрасывается кухонная раковина), но поскольку она может запускать произвольные команды, вы можете подделать ее
Простейшим случаем является фрагмент, подобный
your_primary_target: newmk.mk
#...
WGET=wget
WGET_FLAGS=-q
newmk.mk:
$(WGET) $(WGET_FLAGS) https://s3.bucket.domain.com/newmk.mk
#...
, который пытается загрузить файл, только если такого файла не существует.
Основная трудность здесь заключается в том, что вашим пользователям может понадобиться редактироватьmakefile, чтобы указать загрузчик командной строки, который у них есть (возможно, curl
вместо wget
), или он устанавливает любые флаги, которые требуются их сетевой среде.несуществующая цель
WGET=wget
WGET_FLAGS=-1
newmk.mk: ALWAYS
$(WGET) $(WGET_FLAGS) https://s3.bucket.domain.com/newmk.mk
# Here "ALWAYS" is *not* the name of a file existing in the file-system
ALWAYS:
(или есть игры, в которые вы можете играть с .PHONY
в GNU-make).