在Makefile中未设置环境变量

时间:2020-05-24 18:24:39

标签: makefile gnu-make

我在我的makefile文件中添加了以下代码

RHELC="0"
UBUNTUC="0"
SUSEC="0"
RHELC=$(shell cat /etc/*-release | grep rhel -c)
UBUNTUC=$(shell cat /etc/*-release | grep ubuntu -c)
SUSEC=$(shell cat /etc/*-release | grep suse -c)

ifneq "${RHELC}" "0"
   OS_DIST="RHEL"
endif
ifneq "${UBUNTUC}" "0"
   OS_DIST="UBUNTU"
endif
ifneq "${SUSEC}" "0"
   OS_DIST="SUSE"
endif

但是OS_DIST尚未设置。

1 个答案:

答案 0 :(得分:1)

这里有很多错误。意识到makefile不是shell脚本,并且它们具有不同的语法和规则。

首先,请清楚 environment 变量和 make 变量之间的区别。您在此处设置make变量,而不是环境变量。这些变量的值将出现在您的makefile中,但不会出现在您的环境中。

第二,make对变量中的引号没有做任何特殊的事情。它们与其他任何字符一样对待。当您写时:

RHELC="0"

您正在将make变量RHELC设置为文字字符串"0",包括引号。您没有将其设置为0。类似地,当您编写时:

OS_DIST="RHEL"

您正在将make变量OS_DIST设置为文字字符串"RHEL"

关于您的问题,您尚未解释为什么您认为未设置make变量。您显示给我们的makefile中没有检查或使用这些值的内容,也没有显示任何描述这些值的使用的输出。

因此,我们无法进一步帮助您。

调试makefile的一件事是使用$(info ...) make函数显示变量的值:

$(info RHELC=$(RHELC))

例如。