检查Makefile中环境变量是否设置

4

我在MAKEFILE中有以下代码,使用它,我想根据标志位的设置与否打印信息。

ifeq ($(SET_FLAG),)
$(info ********not set************)
else
$(info *******set *********)
endif

但是这会让我得到以下输出:
********not set************

当我在终端上执行setenv SET_FLAG时,
以及这个:
*******set *********

当我执行setenv SET_FLAG 1

然而,我只想测试SET_FLAG是否设置,无论是否提供值。 有没有办法使上述输出为

*******set *********

即使我执行setenv SET_FLAG命令。

2
这是一个很好的例子,由于缺乏正确的标点符号而难以阅读。 - Beta
1个回答

4
如果您正在使用GNU Make,您可以使用以下解决方法:
ifeq ($(origin SET_FLAG),undefined)
    $(info not set)
else
    $(info set)
endif

这段内容或多或少从http://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_6.html借鉴而来。

顺便提一下,setenv表明您正在使用t?csh。在问题的上下文中使用标准的Bourne兼容shell可能有助于您获得及时和正确的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接