Gru*_*bel 21 directory makefile gnu-make
我有一个目录images/
,我想build/images/
从Makefile中复制到.该目录可能包含多个级别的子目录.最优雅的方式是什么?我想要:
make
运行时都有完整的目录副本(即没有cp -r
)images/
应自动更新build/images/
)make
,所以没有rsync
或cp -u
如果可能的话我正在使用GNU make,因此允许GNU特定的东西.
lio*_*ori 30
好吧,我只是用rsync
.make
您将使用这些约束创建的任何脚本只会复制其功能,并且很可能会更慢并且可能包含错误.示例规则可能看起来如下:
build/images:
rsync -rupE images build/
.PHONY: build/images
Run Code Online (Sandbox Code Playgroud)
(.PHONY每次触发规则).
也许可以使用符号链接或硬链接?
build/images:
ln -s ../images build/images
Run Code Online (Sandbox Code Playgroud)
如果你真的想避免.PHONY
和链接,这片重新实现它们以某种方式(未测试,需要rsync
,find
和普通的mkdir
):
image_files:=$(shell find images -type f)
build/images/%: images/%
mkdir -p $(@D)
cp $< $@
build: $(patsubst %,build/%,$(image_files))
Run Code Online (Sandbox Code Playgroud)