如果 Makefile 中的条件未评估
If condition in Makefile not evaluating
我的 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}}\t\t Built: {{.CreatedSince}}\t\tSize: {{.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)
我的 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}}\t\t Built: {{.CreatedSince}}\t\tSize: {{.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)