使用gnu在文本开头查找字符串

时间:2017-09-08 14:15:19

标签: gcc gnu

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

如果我运行以下内容:

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

....做点什么......

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

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

不幸的是,我不知道如何手动测试这样的gnu文件/脚本,代码是在一个大型构建系统的一部分的文件中,其功能不在我的手中。如果你知道如何手动测试这样的脚本,我也会很感激。

1 个答案:

答案 0 :(得分:0)

“gnu”你的意思是GNU MakeGNU远不止于此。

如果可以安全地假设GCC_VERSION的值,无论从何处获得,都不会以点开头,那么在GNU中,只需测试由点分隔的第一个标记是否足够“ 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 在手册中