在 makefile 中使用 setenv

发布于 2024-12-10 15:58:30 字数 313 浏览 0 评论 0 原文

我试图在我的 makefile 中使用 setenv 变量,但是当我执行 make 文件时,它给出 setenv: command not find 。

我该如何使用它?

实际上我想运行一个设置多个环境变量的 shell 脚本。

由于列表非常庞大,除了使用脚本之外我别无选择。我无法像这样手动设置它们 abcd:= /xx/yy/zz

请建议。

PS同样的命令 setenv xxx yyy 在 shell 中运行良好 当我直接在 makefile 中使用或使用具有此命令的脚本使用 makefile 时,它​​就会失败。 '

I am trying to use setenv variable in my makefile but when I execute my make file it gives setenv: command not found.

How can I use it?

Actually I wanted to run a shell script which sets multiple environment variables.

Since the list is very huge I dont have an option except to use the scripts. I cant set them manually like
abcd:= /xx/yy/zz

Please suggest.

P.S. the same command
setenv xxx yyy works very well in shell
it just fails when I use in makefile directly or makefile with a script having this command.
'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

冷清清 2024-12-17 15:58:30

为什么不使用导出命令?

Why do not you use export command ?

捎一片雪花 2024-12-17 15:58:30

运行脚本来设置环境变量将不起作用,因为 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

希望这会有所帮助!

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 use source 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 .

$ cat setvar.sh 

export TEST=ABC 

$ cat print.sh 

echo $TEST
$ cat mkfile
test:
    . ./setvar.sh && ./print.sh

.SILENT:test
$ make -f mkfile
ABC

You can also include I guess for example,

$ cat mkfile2 
include setvar.sh
test:
    ./print.sh

.SILENT:test
$ make -f mkfile2
ABC

Hope this helps!

丘比特射中我 2024-12-17 15:58:30

我认为 setenv 不是 sh shell 的内置函数。如果您使用 GNU Make,则这是使用的默认 shell。根据您的情况,您可能想使用不同的 shell,例如 bash。您可以通过将 makefile 中的 SHELL 变量设置为您想要的内容来完成此操作:

SHELL := /usr/bin/bash

有关详细信息,请查看 部分。它详细说明了 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:

SHELL := /usr/bin/bash

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.

凉城凉梦凉人心 2024-12-17 15:58:30
export MY_VAR := "/package/your_path"
export MY_VAR := "/package/your_path"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文