Makefile中的条件无法运行

时间:2019-11-26 05:36:11

标签: shell makefile

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

1 个答案:

答案 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
  • 实际构建可能需要正确设置ARCH才能起作用。