我在我的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尚未设置。
答案 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))
例如。