如何复制Makefile中的目录?
我有一个目录 images/
,我想从 Makefile 中将其复制到 build/images/
。该目录可能包含多个级别的子目录。最优雅的方法是什么?我想要:
- 避免在每次
make
运行时进行完整目录复制(即没有cp -r
) - 保证一致性(即如果
images/
中的文件发生更改> 它应该在build/images/
中自动更新) - 避免为 Makefile 中的每个图像和每个子目录指定规则
- 解决
make
中的问题,所以没有rsync
或cp -u
如果可能的话
我使用的是 GNU make,所以允许 GNU 特定的东西。
I have a directory images/
that I want to copy to build/images/
from within a Makefile. The directory might contain multiple levels of subdirectories. What would be the most elegant way to do that? I want:
- avoid a full directory copy on each
make
run (i.e. nocp -r
) - guaranteed consistency (i.e. if a file changed in
images/
it should be automatically updated inbuild/images/
) - avoid to specify a rule for each image and each subdirectory in the Makefile
- solve the issue within
make
, so norsync
orcp -u
if possible
I am using GNU make, so GNU specific stuff is allowed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,我只使用 rsync。您将使用这些约束创建的任何
make
脚本都只会复制其功能,并且很可能会变慢并且可能包含错误。示例规则可能如下所示:(.PHONY
每次都会触发规则)。也许可以使用符号链接或硬链接来代替?
如果你真的想避免 rsync 和链接,这篇文章会以某种方式重新实现它们(未经测试,需要
find
、mkdir
和普通 <代码>cp):Well, I'd just use
rsync
. Anymake
script you will create with these constraints will just replicate its functionality, and most probably will be slower and may contain bugs. An example rule might look:(
.PHONY
to trigger the rule every time).Maybe symlinks or hardlinks can be used instead?
If you really want to avoid
rsync
and links, this piece re-implements them somehow (not tested, needsfind
,mkdir
, and plaincp
):