makefile:: *** 先决条件不能在配方中定义。停止
makefile:: *** prerequisites cannot be defined in recipes. Stop
我正在执行以下帖子中的脚本。因为它有点旧,我想打开这个新线程,因为我在 运行 makefile 时遇到问题。
基本上我已经创建了一个顶级生成文件,它将在子文件夹中编译一组 docker 个图像。
# Assuming each subdirectory containins a Dockerfile
IMAGES := $(patsubst %/,%,$(dir $(wildcard */Dockerfile)))
BUILD_TARGS = $(patsubst %,build_%,$(IMAGES))
TEST_TARGS = $(patsubst %,test_%,$(IMAGES))
PUSH_TARGS = $(patsubst %,push_%,$(IMAGES))
VERSION := 1 # $(shell git rev-parse --short=12 --verify HEAD)
DOCKER_REPO_URL := david.io/reponame
define docker_build =
build_$(1):
@echo "Building $(1)"
#docker build -t $(1) --force-rm $(1)
endef
define docker_test =
test_$(1):
@echo "Testing $(1)"
#docker inspect $(1)
#docker run --rm $(1) help
endef
define docker_push =
push_$(1):
@echo "Pushing $(1)"
#docker tag $(1) $(DOCKER_REPO_URL):$(1)-$(VERSION)
#docker push $(DOCKER_REPO_URL):$(1)-$(VERSION)
#docker tag $$@ $(DOCKER_REPO_URL):$(1)
#docker push $(DOCKER_REPO_URL):$(1)
endef
.PHONY: all build test release clean $(IMAGES) $(BUILD_TARGS) $(TEST_TARGS) $(PUSH_TARGS)
all: build test release
build: $(BUILD_TARGS)
$(foreach image,$(IMAGES),$(eval $(call docker_build,$(image))))
#test: $(TEST_TARGS)
# $(foreach image,$(IMAGES),$(eval $(call docker_test,$(image))))
#release: $(PUSH_TARGS)
# $(foreach image,$(IMAGES),$(eval $(call docker_push,$(image))))
我有以下错误:
makefile:37: *** prerequisites cannot be defined in recipes. Stop.
正如错误所说,您无法评估配方中的整个规则。
您需要在 make 解析 makefile 时执行此操作。
删除 foreach
循环之前的 TAB 字符,使它们不在配方中。
我正在执行以下帖子中的脚本。因为它有点旧,我想打开这个新线程,因为我在 运行 makefile 时遇到问题。
基本上我已经创建了一个顶级生成文件,它将在子文件夹中编译一组 docker 个图像。
# Assuming each subdirectory containins a Dockerfile
IMAGES := $(patsubst %/,%,$(dir $(wildcard */Dockerfile)))
BUILD_TARGS = $(patsubst %,build_%,$(IMAGES))
TEST_TARGS = $(patsubst %,test_%,$(IMAGES))
PUSH_TARGS = $(patsubst %,push_%,$(IMAGES))
VERSION := 1 # $(shell git rev-parse --short=12 --verify HEAD)
DOCKER_REPO_URL := david.io/reponame
define docker_build =
build_$(1):
@echo "Building $(1)"
#docker build -t $(1) --force-rm $(1)
endef
define docker_test =
test_$(1):
@echo "Testing $(1)"
#docker inspect $(1)
#docker run --rm $(1) help
endef
define docker_push =
push_$(1):
@echo "Pushing $(1)"
#docker tag $(1) $(DOCKER_REPO_URL):$(1)-$(VERSION)
#docker push $(DOCKER_REPO_URL):$(1)-$(VERSION)
#docker tag $$@ $(DOCKER_REPO_URL):$(1)
#docker push $(DOCKER_REPO_URL):$(1)
endef
.PHONY: all build test release clean $(IMAGES) $(BUILD_TARGS) $(TEST_TARGS) $(PUSH_TARGS)
all: build test release
build: $(BUILD_TARGS)
$(foreach image,$(IMAGES),$(eval $(call docker_build,$(image))))
#test: $(TEST_TARGS)
# $(foreach image,$(IMAGES),$(eval $(call docker_test,$(image))))
#release: $(PUSH_TARGS)
# $(foreach image,$(IMAGES),$(eval $(call docker_push,$(image))))
我有以下错误:
makefile:37: *** prerequisites cannot be defined in recipes. Stop.
正如错误所说,您无法评估配方中的整个规则。
您需要在 make 解析 makefile 时执行此操作。
删除 foreach
循环之前的 TAB 字符,使它们不在配方中。