【发布时间】:2019-02-13 12:58:00
【问题描述】:
如何从命令行检查 GNU Make 是否支持 Guile?
在 Makefile 内部,可以通过分析 .FEATURES 变量来确定(参见 documentation)。
【问题讨论】:
标签: command-line-arguments gnu-make guile
如何从命令行检查 GNU Make 是否支持 Guile?
在 Makefile 内部,可以通过分析 .FEATURES 变量来确定(参见 documentation)。
【问题讨论】:
标签: command-line-arguments gnu-make guile
一种可能的方法是在标准输入中使用准 makefile。
所以,.FEATURES 变量可以通过以下方式打印:
echo '$(info $(.FEATURES))' | make -f -
如果支持,则以下命令输出 guile 字符串,否则不输出:
echo '$(info $(filter guile,$(.FEATURES)))' | make -f - 2>/dev/null
使用grep的变体:
echo '$(info $(.FEATURES))' | make -f - 2>/dev/null | grep -wo guile
正如@bobbogo 提到的,我们可以完全避免管道,使用--eval 选项:
make --eval '$(info $(filter guile,$(.FEATURES)))' 2>/dev/null
此命令将打印 'guile' 或什么都不打印。
【讨论】:
正如@ruvim 指出的那样,手册上说
您可以通过检查
.FEATURES变量中的单词 guile 来确定是否支持 GNU Guile。
$(if $(filter guile,${.FEATURES}) \
,$(info Guile suppoerted, yay!) \
,$(error Guile not supported - update your make))
【讨论】:
$(...) 变体也是正确的语法(参见doc)。
--eval 并保存管道?
--eval 的变体作为最佳解决方案。