export HELLO=Hello,world
all:
@echo $(HELLO)
@echo $(shell echo $$HELLO)
@echo `echo $$HELLO`
Run Code Online (Sandbox Code Playgroud)
输出:
Hello,world
Hello,world
Run Code Online (Sandbox Code Playgroud)
为什么反引号和 $(shell) 之间存在差异,有没有办法将环境变量传递给 $(shell) 调用?
我试图在交叉编译环境中使用pkg-config,所以我需要设置$PKG_CONFIG_SYSROOT。我可以使用反引号,但它会为每个 .o 文件执行一次。根据计算 Makefile 变量分配,我需要使用 PKG_CFLAGS := $(shell pkg-config $(PACKAGES)),但我无法传递所需的环境变量以使其正常工作。
在 GNU Make 4.0 上测试。
makefile ×1