在 makefile 中使用 setenv
我试图在我的 makefile 中使用 setenv 变量,但是当我执行 make 文件时,它给出 setenv: command not find 。
我该如何使用它?
实际上我想运行一个设置多个环境变量的 shell 脚本。
由于列表非常庞大,除了使用脚本之外我别无选择。我无法像这样手动设置它们 abcd:= /xx/yy/zz
请建议。
PS同样的命令 setenv xxx yyy 在 shell 中运行良好 当我直接在 makefile 中使用或使用具有此命令的脚本使用 makefile 时,它就会失败。 '
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
为什么不使用导出命令?
Why do not you use export command ?
运行脚本来设置环境变量将不起作用,因为 shell 运行单独的进程和进程。不会反映在您当前的 shell 中。您需要
source
shell 脚本。您可以根据您的 shell 使用source
或.
。以下是供您参考的示例,其中 setvar.sh 设置变量 & print.sh 打印它;在 Makefile (mkfile) 中 setvar.sh 是使用获取的。
您也可以
include
我想例如,希望这会有所帮助!
Running the script to set the environment variable will not work as the shell run a separate process & will not reflect in your current shell. You will need to
source
the shell script. You can usesource
or.
based on your shell. Following is a sample for your reference where setvar.sh sets a variable & print.sh prints it; in the Makefile (mkfile) setvar.sh is being sourced using.
You can also
include
I guess for example,Hope this helps!
查看
make -e
Look at
make -e
我认为 setenv 不是
sh
shell 的内置函数。如果您使用 GNU Make,则这是使用的默认 shell。根据您的情况,您可能想使用不同的 shell,例如 bash。您可以通过将 makefile 中的 SHELL 变量设置为您想要的内容来完成此操作:有关详细信息,请查看 这 部分。它详细说明了 SHELL 变量的不同行为以及它是如何从 shell 继承的,或者不是从不同平台上调用 make 的 shell 继承的。
编辑:我同意其他海报的暗示,您可能没有按照您认为应该并且不会使用 setenv 命令的方式设置环境变量。我只是回答你原来的问题。要了解 make 文件中的变量,请查看这些其他部分在 GNU Make 手册中。
I think setenv is not a builtin to the
sh
shell. If you are using GNU Make that is the default shell used. In your situation you probably want to use a different shell, like bash. You do this by setting the SHELL variable in the makefile to what you want like:For more information checkout this section of the GNU Make manual. It details the different behavior of the SHELL variable and how it is, or isn't inherited from the shell make is invoked from on different platforms.
EDIT: I agree with the implication of the other posters that you are probably not setting enviroment variables the way you think you should be and would not be using the setenv command at. I am just responding to your original question. To learn about variables in make files checkout these other sections in the GNU Make manual.