首页 > 解决方案 > Make:使用正则表达式检测平台

问题描述

我正在编写一个查看uname 输出的makefile,但由于某种原因,uname 系统名称过于具体,例如它是C​​YGWIN-NT-1.2.3。我需要将其与正则表达式进行比较。

目前我只能检测到特定的字符串,例如

ifeq (${value},CYGWIN-NT-4.5)
   do something
elif

如何与正则表达式(例如 CYGWIN*)进行比较?

标签: regexmakefile

解决方案


您不能在 GNU make 中使用正则表达式(不使用shell或类似调用处理正则表达式的 shell 脚本)。

但是您不需要正则表达式来进行您正在寻找的比较,这只是为了查看该值是否以给定的字符串开头。您可以使用过滤功能

ifneq (,$(filter CYGWIN%,$(value)))
  ...on cygwin...
endif

推荐阅读