基于文件的Makefile动态规则

时间:2013-06-05 00:05:25

标签: makefile dependencies

我有很多二进制文件(图像等)。我需要将其中一些复制到输出目录中,作为构建过程的一部分。

需要复制的文件列表基于一些相当复杂的逻辑,它由Python脚本动态生成。

假设我在deps.txt中有以下内容:

a.png
b.gif
c.mp4

如何使用makefile将任何必要的文件复制到输出目录?

例如,如果输出目录已包含c.mp4且过期版本为b.gif,则运行makefile会将a.pngb.gif复制到输出目录(但不是c.mp4)。

1 个答案:

答案 0 :(得分:3)

如果您使用的是GNU make,最简单的方法是使用自动生成的包含文件,如下所示:

deps.txt.mk: deps.txt
        cat $< | while read f; do echo "\$$(OUTPUT_DIR)/$$f: $$f ; cp $$< $$@"; done > $@

-include deps.txt.mk

如果你没有使用GNU make,你将不得不使用递归:有一个创建makefile的规则(如上所述),然后运行$(MAKE) -f deps.txt.mk来实际进行安装。如果您需要这个例子,请告诉我。

相关问题