我有一个目录,其中包含多个不同的脚本(Bash,Perl等)和配置文件。在该目录中,还有更多目录,其中包含更多脚本和配置文件。总共,大约有200个左右的文件分散在不同的目录和子目录中。
当我执行“ make”时,我需要将所有已更改的文件复制到另一个目录并保留其子目录结构。
我想做的是,如果这些文件中的任何一个在该目录中发生更改,那么我可以将整个目录递归地复制到目标目录中。
但是,我不确定在GNU Make v3.81中这是最好还是最简单的方法。这是我的Makefile当前的样子:
00C0C0
最终,我想要的是如果$(PKG)不存在,那么我需要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
并将其解包。然后,如果在my-local下有任何文件更改,则仅需要将那些文件复制到$(PKG)中。如果在my-local下没有文件发生更改,则无需重建curl
目标。