我的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。
答案 0 :(得分:1)
默认情况下,不会导出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