Ну, я бы просто использовал rsync
.Любой сценарий make
, который вы создадите с этими ограничениями, будет просто копировать его функциональность, и, скорее всего, будет медленнее и может содержать ошибки.Пример правила может выглядеть следующим образом:
build/images:
rsync -rupE images build/
.PHONY: build/images
(.PHONY
для запуска правила каждый раз).
Может быть, вместо него можно использовать символические или жесткие ссылки?
build/images:
ln -s ../images build/images
Если вы действительно хотите избежать rsync
и ссылок, эта часть каким-то образом повторно их реализует (не проверено, нужны find
, mkdir
и обычные cp
):
image_files:=$(shell find images -type f)
build/images/%: images/%
mkdir -p $(@D)
cp $< $@
build: $(patsubst %,build/%,$(image_files))