【问题标题】:Recursive copy in MakefileMakefile 中的递归复制
【发布时间】:2011-11-21 01:17:30
【问题描述】:

如何在 Make 中递归复制文件?我想让它成为平台中立的;特别是,我需要它在普通 Windows 上工作(没有 cp -r,没有 rsync,没有 cygwin,没有 Interix 等),我希望它在 Linux 中工作,只需最少的更改(没有 robocopy,没有 xcopy/xcopy32 )。我工作的环境非常以 Windows 为中心,我想让我们能够迁移到类似 Unix/Unix 的环境。理想情况下,这应该是独立的(很少有外部依赖项),并且它应该只复制目标中不存在的文件或目标中的文件比源文件旧的文件。

目标:如果文件不存在或 ${DESTINATION} 中的相应文件比源文件旧,则递归遍历 ${SOURCE} 并复制到 ${DESTINATION} 中的类似位置。

我见过How to copy a directory in a Makefile?Recursive wildcards in GNU make?,但这些解决方案在我工作的以Windows 为中心的环境中不起作用。

【问题讨论】:

  • 你考虑过使用tar吗?默认情况下,它不会用旧文件覆盖新文件,因此它可能会完成您所追求的工作。这可能取决于您是否可以在 Windows 上使用类似于 Unix 的系统之一。
  • Windows 的普通安装没有tar
  • Windows 的普通安装也没有make,所以你是在装备机器做开发;添加使其工作所需的工具。
  • 我很乐意。但是我们在这方面拥有的自动化工具很糟糕;它只提取一个可执行文件并使用命令行上的内容来运行它。如果我可以按照自己的方式工作,自动化工具堆栈将使用 Apache Ant。

标签: makefile


【解决方案1】:

make 本身甚至没有复制单个文件的能力。您将需要使用一些外部程序来执行此操作。我不相信在 Linux 和 Windows 上都存在任何适合的程序。

【讨论】:

  • +1。我想在这里添加一个更强大的(并且可能是有争议的)推论:make 不是操作系统的重新实现,不像antmake 是一个用于 shell 脚本的自动化工具。没有办法让它在非 cygwin Windows 等死水操作系统上运行良好,所以越早放弃这个想法越好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-19
  • 2013-10-19
相关资源
最近更新 更多