Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 是否可以在make文件中使用从bash脚本导出的变量?_Linux_Bash_Unix_Makefile - Fatal编程技术网

Linux 是否可以在make文件中使用从bash脚本导出的变量?

Linux 是否可以在make文件中使用从bash脚本导出的变量?,linux,bash,unix,makefile,Linux,Bash,Unix,Makefile,我相信在make文件中使用环境变量的值是可能的 因为我是个新手,所以很难弄清楚怎么做 我尝试了以下方法,但没有成功 在Bash中 TEST_VAR=1 export TEST_VAR 在制作文件中 ifeq ($(TEST_VAR),1) COMMON_OBJECTS += Test1.o endif 但它不编译Test1.cpp 我的make文件只包含这些行,我正在将公共_对象添加到另一个文件中定义的另一个变量中 如果我对这个ifeq条件进行注释,Test

我相信在make文件中使用环境变量的值是可能的

因为我是个新手,所以很难弄清楚怎么做

我尝试了以下方法,但没有成功

在Bash中

TEST_VAR=1

export TEST_VAR
在制作文件中

ifeq ($(TEST_VAR),1)

COMMON_OBJECTS               += Test1.o

endif
但它不编译Test1.cpp

我的make文件只包含这些行,我正在将公共_对象添加到另一个文件中定义的另一个变量中

如果我对这个ifeq条件进行注释,Test1将被编译。但我正在寻找一种有条件地做到这一点的方法

这里我缺少什么?

如果要在bash脚本文件中执行“In bash”命令,则必须使用前面的“.”来执行它。也就是说,如果bash文件被称为“script”,那么


这是因为每个脚本都在它自己的bash实例中运行,除非在它前面加上“.”。然后在调用它的同一个bash上执行它。

在提示符中执行export TEST\u VAR=1,然后执行make如何使用gmake执行make文件?在导出之后,在同一shell会话中?你在这里展示的一切看起来都不错,所以一定是出了什么问题。谢谢。现在,当我从控制台执行导出时,我的变量被列出。但是文件Test1.cpp仍然没有编译:(@BenoitThiery谢谢。我正在从bash脚本导出var,并在下面调用用于生成代码的命令,这是另一个脚本。您的意思是,要访问make文件中的值,我们需要使用
.script\u name
而不是
/script\u name
?在我的情况下,bash脚本本身调用build command.这是bash脚本。这是Makefile。这些脚本按预期工作。请检查它们,如果我没有正确理解您的案例,请告诉我。
$ . script
$ make