我在创建具有某些其他文件内容依赖性的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的优点:只下载一次文件,只处理一次等等。
答案 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
来避免看到警告消息。