You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:45:03