У меня есть каталог, который содержит несколько различных сценариев (Bash, Perl и т. Д.) И файлы конфигурации. В этом каталоге еще больше каталогов, которые содержат еще больше скриптов и файлов конфигурации. Всего в разных каталогах и подкаталогах разбросано около 200 разных файлов.
Когда я выполняю 'make', мне нужно, чтобы все файлы, которые были изменены, были скопированы в другой каталог и сохранили свою структуру подкаталогов.
Что я хотел бы сделать, если любой из этих файлов изменится в этом каталоге, то я могу просто рекурсивно скопировать весь каталог в целевой каталог.
Однако я не уверен, является ли это лучшим или самым простым способом сделать это в GNU Make v3.81. Вот как выглядит мой Makefile:
PKG = my_prog_1.1
LOCAL_FILES = $(shell find my-local -type f)
TARGETS = $(patsubst my-local/%,$(PKG)/%,$(LOCAL_FILES))
.PHONY: rpm all
all: rpm
$(PKG):
curl -f -O "URL_to_$(PKG).tar.gz"
tar -xvf $(PKG).tar.gz
rm -f $(PKG).tar.gz
$(TARGETS): $(LOCAL) | $(PKG)
cd my-local && cp -R * ../$(PKG)
rpm: $(TARGETS)
# commands to tar up $(PKG) and make an rpm
В конечном счете, я бы хотел, чтобы $ (PKG) не существовало, а затем мне нужно curl
распаковать его. Затем, если какие-либо файлы изменились в my-local, только эти файлы должны быть скопированы в $ (PKG). Если в my-local файлы не были изменены, нет необходимости перестраивать цель rpm
.