gpt4 book ai didi

directory - 如何在 Makefile 中复制目录?

转载 作者:行者123 更新时间:2023-12-03 11:53:57 25 4
gpt4 key购买 nike

我有一个目录 images/我想复制到build/images/从 Makefile 中。该目录可能包含多个级别的子目录。最优雅的方法是什么?我想:

  • 避免在每个 make 上复制完整的目录运行(即没有 cp -r )
  • 保证一致性(即,如果文件在 images/ 中更改,它应该在 build/images/ 中自动更新)
  • 避免为 Makefile 中的每个图像和每个子目录指定规则
  • 解决 make 内的问题,所以没有 rsynccp -u如果可能的话

  • 我正在使用 GNU make,所以允许使用 GNU 特定的东西。

    最佳答案

    好吧,我就用 rsync .任意 make您将使用这些约束创建的脚本只会复制其功能,并且很可能会更慢并且可能包含错误。示例规则可能如下所示:

    build/images:
    rsync -rupE images build/

    .PHONY: build/images

    ( .PHONY 每次触发规则)。

    也许可以使用符号链接(symbolic link)或硬链接(hard link)?
    build/images:
    ln -s ../images build/images

    如果你真的想避免 rsync和链接,这篇文章以某种方式重新实现了它们(未经测试,需要 findmkdir 和普通 cp ):
    image_files:=$(shell find images -type f)
    build/images/%: images/%
    mkdir -p $(@D)
    cp $< $@

    build: $(patsubst %,build/%,$(image_files))

    关于directory - 如何在 Makefile 中复制目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3100776/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com