文件内容的Makefile依赖性,可能不存在

时间:2016-12-22 02:25:42

标签: bash makefile gnu-make

我在创建具有某些其他文件内容依赖性的Makefile构建时遇到问题。

我知道我可以在makefile中编写类似的东西,以便即时生成先决条件:

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

#bash
make result/nuclease.stat

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

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

我应该做出什么样的依赖?

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

请检查Makefile dependency tree

1 个答案:

答案 0 :(得分:4)

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

include nuclease-sample-list.mk

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

这就是你要做的一切。如果您使用的是较早版本的GNU,则可能需要使用-include而不是include来避免看到警告消息。