make 语法以换行符分隔,但 $(shell ...) 用空格替换换行符。那么最丑陋的方法是什么
$(eval $(shell program-that-emits-makefile-fragment))
这并不像人们喜欢的那样工作。
最佳答案
这可能会满足您的想法:
makefile_fragment:
program-that-emits-makefile-fragment > $@
include makefile_fragment
够了吗?如果需要,您还可以使用其他技巧,例如让规则围绕程序生成的内容添加上下文,或者通过 sed 将输出管道化以将其归入一行,然后用反斜杠将其解析出来。
关于shell - 如何使 $(eval $(shell ...)) 在 GNU make 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3524726/