Makefile仅复制更改的目标

时间:2018-11-07 18:44:30

标签: gnu-make

我有一个目录,其中包含多个不同的脚本(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目标。

0 个答案:

没有答案