【问题标题】:Makefile dependency by file content, which might not exist文件内容的 Makefile 依赖项,可能不存在
【发布时间】:2016-12-22 02:25:42
【问题描述】:

我在创建依赖于其他文件内容的 Makefile 构建时遇到问题。

我知道我可以在 makefile 中编写类似的内容来即时生成先决条件:

result/nuclease.stat : $(shell cat config/nuclease.sample.list)

#bash
make result/nuclease.stat

但问题是文件 config/nuclease.sample.list 可能不存在,我有一个目标。

如果我可以强制 make 在评估 $(shell cat config/nuclease.sample.list) 之前要求 config/nuclease.sample.list - 问题就解决了.

我应该建立什么样的依赖关系?

还有一件事,我想保留所有 gnu make 的优点:只下载一次文件,只处理一次等等。

请查看

【问题讨论】:

    标签: bash makefile gnu-make


    【解决方案1】:

    最直接的答案是使用constructed include files。在此方法中,您将包含一个定义所需依赖关系的生成文件,并提供生成包含所需信息的包含文件的生成规则。这就是你所要做的:make 知道如何做剩下的事情。根据您的问题,可能类似于:

    include nuclease-sample-list.mk
    
    nuclease-sample-list.mk: config/nuclease.sample.list
            echo "result/nuclease.stat : $$(cat $<)" > $@
    

    这就是你所要做的。如果您使用的是旧版本的 GNU make,您可能需要使用 -include 而不是 include 以避免看到警告消息。

    【讨论】:

      猜你喜欢
      • 2013-07-08
      • 2017-10-03
      • 2022-01-25
      • 2016-09-14
      • 2011-06-07
      • 1970-01-01
      • 2012-10-04
      • 2011-01-24
      • 1970-01-01
      相关资源
      最近更新 更多