如果生成文件中的条件未评估



我的 Makefile 中有一个简单的 if 条件,用于基于平台构建 Docker 映像(如果在 arm64 上使用 docker buildx),但它没有评估,我很困惑为什么它不是。 有什么建议吗?谢谢!

...
OS_ARCH := $(shell /usr/bin/arch)
build:
@echo "Building for ${OS_ARCH}"
ifeq ($(OS_ARCH),"arm64")
@echo "Building for ARM64"
@docker buildx build -t $(NAMESPACE)/$(IMAGE_NAME):$(VERSION) --platform $(PLATFORM) -f ./$(DOCKERFILE) --no-cache=$(NO_CACHE) --label "git-revison=$(git rev-parse HEAD)" --label "version=$(VERSION)" .
else
@echo "Building for x86_64"
@docker build -t $(NAMESPACE)/$(IMAGE_NAME):$(VERSION) -f ./$(DOCKERFILE) --no-cache=$(NO_CACHE) --label "git-revison=$(git rev-parse HEAD)" --label "version=$(VERSION)" .
endif
@echo 'Done building.'
@docker images --format '{{.Repository}}:{{.Tag}}tt Built: {{.CreatedSince}}ttSize: {{.Size}}' | grep $(IMAGE_NAME):$(VERSION)
@echo "Finished building $(IMAGE_NAME):$(VERSION)"

你有:

ifeq ($(OS_ARCH),"arm64")

如果OS_ARCH设置为arm64则计算结果为:

ifeq (arm64,"arm64")

字符串arm64与字符串"arm64"不同,因为后者有引号,而前者没有。

用:

ifeq ($(OS_ARCH),arm64)

最新更新