GNU Make中使用ifneq判断多变量至少有一个非空的实现方法
GNU Make多变量至少一个非空的合并条件写法
GNU Make原生条件语法不支持直接写||或运算符,可通过以下三种纯Make函数实现需求,均无需引入shell逻辑:
方法1:or函数(推荐,GNU Make 3.81+支持)
$(or)函数会返回第一个非空的参数值,所有参数全为空时返回空字符串,逻辑完全对应「或」判断:
ifneq ($(or $(VAR1),$(V2),$(VAR3),$(V4)),) # 所有变量至少一个非空时执行的公共命令 else # 所有变量全为空时执行的命令 endif
方法2:filter-out 函数(兼容所有版本,不受变量内容空格影响)
逐个过滤掉所有空值变量,只要过滤后结果非空就说明存在非空变量:
ifneq ($(filter-out ,$(VAR1) $(V2) $(VAR3) $(V4)),) # 公共命令 else # 全空时命令 endif
方法3:strip 函数(最简写法,适合变量无空格场景)
拼接所有变量后去除首尾/连续空格,若结果为空说明所有变量全是空:
ifneq ($(strip $(VAR1) $(V2) $(VAR3) $(V4)),) # 公共命令 else # 全空时命令 endif
内容的提问来源于stack exchange,提问作者MarcoIs
相关产品推荐
相关产品推荐

