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

GNU Make:如何检测VAR1或VAR2是否为空或未定义

问题分析与修复

你的问题出在ifeq的比较对象上:

  • $(and $(VAR1),$(VAR2))在VAR1或VAR2为空/未定义时,返回的是无引号的空字符串
  • 但你写的比较目标是"",这是一个包含两个双引号的非空字符串,两者永远不相等,导致条件永远无法触发。

修复后的代码

把ifeq右边的""改成空即可:

ifeq ($(and $(VAR1),$(VAR2)),)
$(info *************************************)
$(info *        To avoid prompts set       *)
$(info *          VAR1 and VAR2            *)
$(info *       prior to running make       *)
$(info *************************************)
endif

如果需要兼容变量包含空白字符的场景,可以加上strip过滤冗余空白:

ifeq ($(strip $(and $(VAR1),$(VAR2))),)
$(info *************************************)
$(info *        To avoid prompts set       *)
$(info *          VAR1 and VAR2            *)
$(info *       prior to running make       *)
$(info *************************************)
endif

验证逻辑

  • 直接运行make(不设置VAR1和VAR2),会正常打印提示信息
  • 运行make VAR1=foo VAR2=bar,提示信息不会输出

内容的提问来源于stack exchange,提问作者aimass

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:50:26