Makefile 中未设置环境变量

Environment variable not getting set in Makefile

我在我的 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 没有设置。

这里有很多错误。意识到 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))

例如。