我正在尝试在我的makefile中使用setenv变量,但是当我执行make文件时,它会找到setenv:command not found。
我该如何使用它?
实际上我想运行一个设置多个环境变量的shell脚本。
由于列表非常庞大,除了使用脚本之外我没有其他选择。我不能手动设置它们 abcd:= / xx / yy / zz
请建议。
P.S。同样的命令 setenv xxx yyy在shell中运行良好 当我直接使用makefile或者使用带有此命令的脚本的makefile时,它就会失败。 “
答案 0 :(得分:3)
为什么不使用导出命令?
答案 1 :(得分:3)
运行脚本来设置环境变量将不起作用,因为shell运行一个单独的进程&不会反映在你当前的shell中。您需要source
shell脚本。您可以根据自己的shell使用source
或.
。以下是一个供您参考的示例,其中setvar.sh设置变量& print.sh打印出来;在Makefile(mkfile)中,setvar.sh使用.
$ cat setvar.sh
export TEST=ABC
$ cat print.sh
echo $TEST
$ cat mkfile
test:
. ./setvar.sh && ./print.sh
.SILENT:test
$ make -f mkfile
ABC
你也可以include
我猜,例如,
$ cat mkfile2
include setvar.sh
test:
./print.sh
.SILENT:test
$ make -f mkfile2
ABC
希望这有帮助!
答案 2 :(得分:0)
看看
答案 3 :(得分:0)
我认为setenv不是sh
shell的内置函数。如果您使用的是GNU Make,则使用的是默认shell。在你的情况下,你可能想要使用不同的shell,比如bash。您可以通过将makefile中的SHELL变量设置为您想要的内容来完成此操作:
SHELL := /usr/bin/bash
有关GNU Make手册的详细信息,请查看this部分。它详细说明了SHELL变量的不同行为以及它是如何实现的,或者不是从shell继承的make在不同平台上调用。
编辑:我同意其他海报的暗示,你可能没有按照你认为的那样设置环境变量,也不会使用setenv命令。我只是回答你原来的问题。要了解make文件中的变量,请在GNU Make手册中查看these other sections。答案 4 :(得分:-1)
export MY_VAR := "/package/your_path"