加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何在make目标之间传递ENV变量

发布时间:2020-12-14 01:28:45 所属栏目:Linux 来源:网络整理
导读:我在makefile中喜欢这个 target1: export var1=test $(MAKE) target2target2: echo $(var1) 这是空的 我有其他依赖项,所以我想在第一个目标中设置变量,然后所有子项依赖项应该能够访问它 编辑: .ONESHELL:target1: export var1=test echo $(var1) 产量 make
我在makefile中喜欢这个

target1:
       export var1=test
       $(MAKE) target2

target2:
       echo $(var1)

这是空的

我有其他依赖项,所以我想在第一个目标中设置变量,然后所有子项依赖项应该能够访问它

编辑:

.ONESHELL:

target1:
        export var1=test
        echo $(var1)

产量

make target1
export var1=test
echo

解决方法

默认情况下,make会为每个配方调用一个新的shell环境,第一行的导出变量不在第二行的范围内.

您可以通过多种方式解决此问题:

使用make的export指令导出变量

target1: export var1 := test
target1:
    $(MAKE) target2

使用make的命令行变量赋值

target1:
    $(MAKE) target2 var1=test

使用shell命令变量赋值

target1:
    var1=test $(MAKE) target2

将两个命令组合在一个配方中

target1:
    export var1=test; $(MAKE) target2

强制make将所有配方传递给同一个shell实例

.ONESHELL:

target1:
    export var1=test
    $(make) target2

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读