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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |