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

Find string at start of text using gnu

在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 files/scripts,代码位于一个文件中,该文件是一个大型构建系统的一部分,我无法控制其功能。如果您知道我如何手动测试这样的脚本,我也将不胜感激。

"gnu" 你的意思似乎是 GNU Make. GNU 远不止于此。

如果可以安全地假设 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 在手册中