如果Makefile中存在条件,则无法运行

问题描述 投票:0回答:1

我的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。

shell makefile
1个回答
0
投票

默认情况下,不会导出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
  • 实际的构建可能需要正确设置ARCH才能起作用。
© www.soinside.com 2019 - 2024. All rights reserved.