【发布时间】:2020-12-23 12:15:49
【问题描述】:
我有一个makefile,1.mk,内容如下:
#!make
aa := x
bb := y
cc := z
export
include abc.mk
all:
@echo $(chk1)
还有另一个makefile,abc.mk,内容如下:
#!make
chk1 := $(shell set -o posix; set | awk -F "=" 'BEGIN{ORS=" "}1 $$1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $$1}')
chk2 := $(shell env &> pqr)
export
当我检查时,没有生成文件变量:
> make all -f 1.mk | grep aa
> grep 'aa' pqr
因此我可以说,编译时 shell 没有 makefile 变量。我想要一种在编译时 shell 中访问所有 makefile 变量的方法。
约束:我事先不知道变量名称以下列方式编写代码:
chk2 := $(shell export aa=$(aa); env &> pqr)
【问题讨论】:
-
您的要求对我来说不是 100% 清楚。 “我希望“xyz.sh”拥有所有makefile变量”是什么意思?您想(手动)在一个名为
xyz.sh的文件中定义所有 makefile 变量吗? “我需要在编译时评估它”是什么意思?什么汇编?你的意思是要在make解析makefile的时候从xyz.sh导入变量定义? -
我同意这个问题不清楚。如果您要说的是您希望 shell 脚本
xyz.sh能够访问 make 变量a、b和c,那么您可以在运行脚本之前添加一个export a b c,这些make变量将被导出到环境中,shell脚本可以将它们作为环境变量$a、$b、$c访问。 -
感谢您的回复。我已经更新了这个问题。请检查。