makefile中变量传递到target调用的shell脚本中遇到的问题?

有如下makefile脚本:

# Rules
.PHONY : test

# ==============================================================================
ifeq ($(COCO_TESTCASE), ust_discovery_test)
  UST_SYS_XML ?= system-ss_picocom.xml
else
  export UST_SYS_XML ?= system-discovered.xml
endif

#.EXPORT_ALL_VARIABLES:
test:
	bash ./test.sh

其中 test.sh 内容如下:

#!/bin/bash -fe

echo "debug point " $UST_SYS_XML

如果在Makefile所在的目录下执行make test COCO_TESTCASE=ust_discovery_test命令,会打印期待的结果,不管变量UST_SYS_XML有没有用export标记,

debug point  system-ss_picocom.xml

如果在Makefile所在目录的上层目录执行make -f xx/Makefile test COCO_TESTCASE=ust_discovery_test, 则test.sh中不能正确拿到UST_SYS_XML变量,

UST_SYS_XML: Undefined variable.
有谁知道为啥吗?

找到了一种解决办法,是添加.EXPORT_ALL_VARIABLES:

# Rules
.PHONY : test

# ==============================================================================
ifeq ($(COCO_TESTCASE), ust_discovery_test)
  UST_SYS_XML ?= system-ss_picocom.xml
else
  export UST_SYS_XML ?= system-discovered.xml
endif

.EXPORT_ALL_VARIABLES:
test:
	bash ./test.sh

'.EXPORT_ALL_VARIABLES'

Simply by being mentioned as a target, this tells 'make' to export all variables to child processes by default. *Note Communicating Variables to a Sub-'make': Variables/Recursion.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值