【问题标题】:How to check whether GNU Make supports Guile如何检查 GNU Make 是否支持 Guile
【发布时间】:2019-02-13 12:58:00
【问题描述】:

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

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

【问题讨论】:

    标签: command-line-arguments gnu-make guile


    【解决方案1】:

    一种可能的方法是在标准输入中使用准 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' 或什么都不打印。

    【讨论】:

      【解决方案2】:

      正如@ruvim 指出的那样,手册上说

      您可以通过检查 .FEATURES 变量中的单词 guile 来确定是否支持 GNU Guile。

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

      【讨论】:

      • 我只需要一个最短的命令行单行。关于语法——$(...) 变体也是正确的语法(参见doc)。
      • @ruvim 啊,对不起,我把你的 shell 行读成了 make 食谱!天哪,我得多出去走走。最短的测试可能是使用--eval 并保存管道?
      • 好的,谢谢!我添加了带有--eval 的变体作为最佳解决方案。
      猜你喜欢
      • 2011-10-17
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2019-02-28
      • 2017-05-17
      相关资源
      最近更新 更多