Windows下使用NMake检查环境变量值的问题求助
NMake检查环境变量是否设置的正确写法
你原来的代码用!IFDEF VAL是错的——NMake里!IFDEF只检查Makefile里定义的本地宏,不管系统环境变量。针对CL2022的NMake,给你两种靠谱的写法:
方法一:原生环境变量检查(推荐)
用ENV:前缀配合DEFINED()函数,直接识别系统环境变量:
!IF DEFINED(ENV:VAL) echo $(ENV:VAL) !ELSE echo "NOT SET" !ENDIF
ENV:VAL明确指定要查的是系统环境变量VAL,不是本地宏$(ENV:VAL)是NMake里引用环境变量的标准写法,比直接用%VAL%更不容易出解析问题
方法二:调用CMD命令判断
如果要兼容老版本NMake,可以用CMD的set命令来判断:
!IF [set VAL >nul 2>&1] echo %VAL% !ELSE echo "NOT SET" !ENDIF
set VAL >nul 2>&1是CMD命令:如果环境变量VAL存在,命令返回0(NMake视为真);不存在则返回非0(视为假),>nul 2>&1是为了屏蔽命令本身的输出
关键提醒
别把NMake本地宏和系统环境变量搞混:你原来的!IFDEF VAL,只有当你在Makefile里写过VAL=xxx定义本地宏时才会成立,和系统里的环境变量完全没关系。
内容的提问来源于stack exchange,提问作者IGP
相关产品推荐
相关产品推荐

