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
相关产品推荐
相关产品推荐

