use*_*572 1 bash makefile gnu-make
我在创建依赖于其他文件内容的 Makefile 构建时遇到问题。
我知道我可以在 makefile 中编写类似的内容来动态生成先决条件:
result/nuclease.stat : $(shell cat config/nuclease.sample.list)
#bash
make result/nuclease.stat
Run Code Online (Sandbox Code Playgroud)
但问题是文件config/nuclease.sample.list可能不存在,而我有一个目标。
如果我可以在$(shell cat config/nuclease.sample.list)评估之前强制 make 要求config/ nuclease.sample.list - 问题就解决了。
我应该建立什么样的依赖?
另一件事,我想保留所有 gnu make 的优良品质:仅下载一次文件,仅处理一次等等。
最直接的答案是使用构造的包含文件。在此方法中,您将包含一个定义所需依赖关系的 makefile,并提供一个生成规则,该规则生成包含所需信息的包含文件。这就是您所要做的:make 知道如何做剩下的事情。根据你的问题,它可能是这样的:
include nuclease-sample-list.mk
nuclease-sample-list.mk: config/nuclease.sample.list
echo "result/nuclease.stat : $$(cat $<)" > $@
Run Code Online (Sandbox Code Playgroud)
这就是你所要做的。如果您使用的是旧版本的 GNU make,您可能需要使用-include而不是include避免看到警告消息。
| 归档时间: |
|
| 查看次数: |
872 次 |
| 最近记录: |