未在Makefile中设置环境变量

未在Makefile中设置环境变量,makefile,gnu-make,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 if

我在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脚本,它们有不同的语法和规则

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

第二,make对变量中的引号没有任何特殊作用。他们被视为与任何其他字符相同。当你写作时:

RHELC="0"
OS_DIST="RHEL"
您正在将make变量
RHELC
设置为文本字符串
“0”
,包括引号。您没有将其设置为0。同样,当你写作时:

RHELC="0"
OS_DIST="RHEL"
您正在将make变量
OS_DIST
设置为文本字符串
“RHEL”

至于你的问题,你还没有解释为什么你认为make变量没有被设置。您向我们展示的makefile中没有检查或使用这些值的内容,也没有您向我们展示的描述如何使用这些值的输出

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

调试makefile可以做的一件事是使用
$(info…
make函数来显示变量的值:

$(info RHELC=$(RHELC))
比如说