我的makefile中包含以下内容:
ARCH := $(if $(GOARCH),$(GOARCH),$(shell go env GOARCH))
all: build
build:
echo "Doing the build"
if [ "$$ARCH" = "amd64" ]; then \
touch test; \
echo "inside the condition loop"; \
fi
现在,在运行make
命令时,得到以下输出:
# make
echo "Doing the build"
Doing the build
if [ "$ARCH" = "amd64" ]; then \
touch test; \
echo "inside the condition loop"; \
fi
这会执行,但不会在当前目录中创建test
文件。
# ls
Makefile
知道我在这里做错了什么吗?或任何进一步调试的技巧? TIA。
默认情况下,不会导出make
变量。您可能要在分配后添加“导出ARCH”。
ARCH := $(if $(GOARCH),$(GOARCH),$(shell go env GOARCH))
export ARCH
# OR
export ARCH := $(if $(GOARCH),$(GOARCH),$(shell go env GOARCH))
为了使build
操作起作用,出于两个原因,需要导出ARCH
'[ "$ARCH" = "amd64" ];
引用环境变量ARCH