【发布时间】: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