【问题标题】:Makefile dynamic rules based on a fileMakefile 基于文件的动态规则
【发布时间】:2013-06-05 09:32:05
【问题描述】:

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

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

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

a.png
b.gif
c.mp4

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

例如,如果输出目录已经包含c.mp4 和一个过时版本的b.gif,运行makefile 会将a.pngb.gif 复制到输出目录(但不是c.mp4) .

【问题讨论】:

    标签: makefile dependencies


    【解决方案1】:

    如果您使用 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 来实际进行安装。如果您需要该示例,请告诉我。

    【讨论】:

    • 谢谢。我会大胆猜测你也写了mad-scientist.net/make/autodep.html。推荐阅读。
    • +1!我可能会建议使用while ... done &lt; $&lt; 而不是cat $&lt; | while ... doneCat 是一个外部实用程序,在这里不是必需的。
    猜你喜欢
    • 2017-07-22
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多