读取makefile中的环境变量值

Raj*_*aja 2 makefile gnu-make

如果我尝试从 makefile 中访问某些环境变量,则不会显示它们。我的应用程序创建一个环境变量 MACHTYPE,其值为“DELLMACHINE”。我想在 make 文件中使用 echo 命令打印这个值。这是代码

@echo $(MACHTYPE)
Run Code Online (Sandbox Code Playgroud)

执行上述命令后,将显示空字符串。

有趣的是,其他环境变量(例如 PATH)工作正常,但 MACHTYPE 显示为空字符串。有谁知道为什么会发生这种情况?

Mad*_*ist 5

这是因为您尚未从 shell 导出该变量。普通 shell 变量仅对该 shell 有效,不会传递给 shell 启动的任何程序(如 make)。

如果您希望将变量添加到环境中并传递给程序,则必须export这样做;在 shell 中运行它或将其添加到 shell 初始化文件中:

export MACHTYPE=DELLMACHINE
Run Code Online (Sandbox Code Playgroud)

或者,如果您愿意,也可以分两步进行:

MACHTYPE=DELLMACHINE

export MACHTYPE
Run Code Online (Sandbox Code Playgroud)

然后,运行make,您将看到设置。