未在Makefile中设置环境变量

问题描述 投票:0回答:1

我已在我的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 gnu-make
1个回答
1
投票

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

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

其次,make对变量中的引号没有什么特别的作用。它们与其他任何字符一样对待。当你写:

RHELC="0"

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

OS_DIST="RHEL"

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

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

所以,我们不能再为您提供帮助。

您可以调试生成文件的一件事是使用$(info ...) make函数显示变量的值:

$(info RHELC=$(RHELC))

例如。

© www.soinside.com 2019 - 2024. All rights reserved.