如何在GNU makefile中复制文件并保留结构?

3
例如,给定当前目录中的文件列表,如何将这些文件复制到另一个目录中。
dest_dir := /usr/bin/test

.PHONY: install
install: $(dest_dir)

#there files are in current directory
xpi_built := install.rdf \
             chrome.manifest \
             $(wildcard content/*.js) \
             $(wildcard content/*.xul) \
             $(wildcard content/*.xml) \
             $(wildcard content/*.css) \
             $(wildcard skin/*.css) \
             $(wildcard skin/*.png) \
             $(wildcard locale/*/*.dtd) \
             $(wildcard locale/*/*.properties)

#how to copy there files to another directory
$(dest_dir)/% : $(xpi_built)
    @mkdir -p $(dest_dir)
    @cp $< $@

我该如何将文件列表复制到目标目录中?

1个回答

0
.PHONY: copy_files

copy_files: $(xpi_built)
    @mkdir -p $(dest_dir)
    @cp $^ $(dest_dir)

cp -R 无法保留目录结构。 - Jichao
@Jichao:你说得对,是我的错误,我会修改的。我也正在努力开发一种变体,只有在需要复制文件时才进行复制(即如果它们还没有被复制,或者已经过时了),但这很难让它简单化。 - Beta
你可以添加一个虚拟目标/文件来跟踪它。也就是说,使用 $(dest_dir)/.copyfiles: $(xpi_built),其中最后一条规则是 touch $@$(dest_dir)/.copyfiles 文件将带有日期,因此仅在构建的文件之一更新时才会更新。此外,如果你删除了 $(dest_dir),它将重新运行。 - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接