【问题标题】:Find string at start of text using gnu使用 gnu 在文本开头查找字符串
【发布时间】:2017-09-08 14:15:18
【问题描述】:

在 gnu 中,我想测试正在使用的 gcc 的版本。 我正在检查的版本是“4”,但实际上“4”的任何次要版本都是可以接受的。 因此,如果 gcc 是“4.1”或“4.3.5”,那很好。

如果我运行以下命令:

ifeq "$(findstring 4.,$(GCC_VERSION))" "4."

....做事...

对于 GCC_VERSION 值为 4.1,它会测试为真,但对于值为“2.4.3”的 GCC_VERSION,它也会测试为真,这是我不想要的。

所以我想知道的是如何测试 GCC_VERSION 的前两个字符。如果这些等于“4”,那么我希望测试通过。

不幸的是,我不知道如何像这样手动测试 gnu 文件/脚本,代码位于一个文件中,该文件是一个庞大的构建系统的一部分,它的功能不在我的掌控之中。如果您知道如何手动测试这样的脚本,我也将不胜感激。

【问题讨论】:

    标签: gcc gnu


    【解决方案1】:

    “gnu”似乎是指GNU MakeGNU 远不止于此。

    如果可以安全地假设 GCC_VERSION 的值(无论您从何处获得它们)不会以点开头,那么在 GNU Make 中测试由点分隔的第一个标记是否为“4”就足够了:

    ifeq "$(firstword $(subst ., ,$(GCC_VERSION)))" "4"
    $(info version 4.x.y)
    else
    $(info not version 4.x.y)
    endif
    

    8.2 Functions for String Substitution and Analysis 在手册中

    【讨论】:

    • 谢谢,这样就行了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2022-08-11
    • 2010-09-16
    • 2011-06-16
    • 1970-01-01
    • 2010-10-29
    相关资源
    最近更新 更多