在我输入时的shell中
echo $demoPath
打印
/usr/local/demo
如何在makefile中获取此变量$demoPath
的值?
答案 0 :(得分:92)
如果您已导出环境变量:
export demoPath=/usr/local/demo
您只需在makefile
中按名称引用它(make
导入您设置的所有环境变量):
DEMOPATH = ${demoPath} # Or $(demoPath) if you prefer.
如果您没有导出环境变量,则在导出它之前无法访问它,或者除非您在命令行上显式传递它:
make DEMOPATH="${demoPath}" …
如果您使用的是C shell派生词,请将setenv demoPath /usr/local/demo
替换为export
命令。
答案 1 :(得分:1)
all:
echo ${PATH}
或仅针对一个命令更改PATH:
all:
PATH=/my/path:${PATH} cmd
答案 2 :(得分:0)
对于那些想要一些官方文件确认行为的人
make中的变量可以来自运行make的环境。 make在启动时看到的每个环境变量都是 转换为具有相同名称和值的make变量。 但是,在makefile中或使用命令进行显式分配 参数,覆盖环境。 (如果指定了“ -e”标志, 然后来自环境的值将覆盖makefile中的分配。
https://www.gnu.org/software/make/manual/html_node/Environment.html
答案 3 :(得分:0)
如果在同一个脚本中导出变量,则需要使用两个 $$ 而不是 $, 如果您的 Makefile 看起来像这样:
target:
. ./init.sh; \
echo ${HOMEPATH}:$${FOO};
在 init.sh 脚本中导出变量 FOO
$ cat ./init.sh
#!/bin/bash
export FOO=foo:
这样当你运行 make target 时,在脚本运行之前定义的环境变量 HOMEPATH 将只使用一个 $ 显示,但是环境变量 在同一脚本中导出的 FOO 需要 $$ 才能显示