我可以在make运行后访问make设置的变量吗?

时间:2013-07-01 14:34:07

标签: makefile environment-variables

我有Makefile在运行时设置一些变量,例如foo = bar

运行make时,我想访问这些变量。

不幸的是echo $foo没有返回任何内容。

有没有办法将变量从make导回到环境中?

1 个答案:

答案 0 :(得分:5)

你的问题有点令人困惑,但根据主题我认为你的意思是,你的makefile中设置变量如foo = bar,然后在make运行并退出后你想看到shell中foo的值调用make?

不,这是不可能的。它与make无关:任何类型的子进程都不可能修改其父进程的环境(在POSIX类型系统中)。可以这样做的唯一方法是子进程生成设置变量的输出,父shell计算此输出。例如,如果您在makefile中编写了一条规则,如下所示:

show-foo: ; @echo 'foo=$(foo)'

然后你可以从你的shell运行它:

eval `make show-foo`

它会在你的shell中设置值。