如何检查 GNU Make 是否支持 Guile

How to check whether GNU Make supports Guile

如何从命令行检查 GNU Make 是否支持 Guile?

在 Makefile 中可以通过分析 .FEATURES 变量来确定(参见 documentation)。

一种可能的方法是在标准输入中使用准 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 指出的那样,手册说

You can determine whether GNU Guile support is available by checking the .FEATURES variable for the word guile.

$(if $(filter guile,${.FEATURES}) \
  ,$(info Guile suppoerted, yay!) \
  ,$(error Guile not supported - update your make))