我有一个makefile,它在proj根目录下。
文件夹proj是主文件夹,它下面有ws-led或tools-ext等文件夹,其中包含停靠文件。此外,还有Makefile,它位于根下,需要运行所有命令。
这是文件夹结构
proj
- ws-led
— Dockerfile
- tools-ext
— Dockerfile
- Makefile我需要的是对rot下的每个文件夹进行cd (我们有更多的文件夹)并运行:
docker build <folder name> .
示例:(完全类似于手动运行以下命令)
cd ws-led
docker build -t ws-led .
cd tools-ext
docker build -t tools-ext .我尝试使用以下方法(可能不是repo param,而是在Makefile的同一级别的所有文件夹上运行)
类(CURDIR)…
all: pre docker-build
.PHONY: pre docker-build
repos := ws-led tools-ext
pre:
$(patsubst %,docker-build,$(repos))
docker-build:pre
cd $*; docker build -t $* . >&2 | tee docker-build在使用这个im时,会得到一个错误:
invalid argument "." for "-t, --tag" flag: invalid reference format你知道这是怎么回事吗?或者我可以做得更好?
由于我有许多repos/文件夹,所以我想使用make来处理它。
发布于 2020-02-12 23:17:34
有不止一种方法可以做到。
您可以使用bash循环:
docker-build:
for dir in $(repos); do cd $$dir; docker build -t $$dir . >&2 | tee docker-build; done或者使用模式规则(或者在本例中是静态模式规则):
REPO_BUILDS := $(addsuffix -build, $(repos))
docker-build: $(REPO_BUILDS)
.PHONY: $(REPO_BUILDS)
$(REPO_BUILDS): %-build:
cd $*; docker build -t $* . >&2 | tee docker-buildhttps://stackoverflow.com/questions/60196647
复制相似问题