我有一个用于 Go 项目的相当简单的 makefile,我希望能够运行类似于:make release-all
为了为几个不同的平台(例如windows、linux、darwin)构建版本。
我的 make 文件目前如下所示:
GOOSES = darwin windows linux
GOARCHS = amd64 386
.PHONY: release-all $(GOOSES) $(GOARCHS)
release: $(GOOSES)
$(GOOSES): GOOS := app $@
$(GOOSES): $(GOARCHS)
$(GOARCHS): GOARCH := $@
$(GOARCHS): build
build:
GOOS=$(GOOS) GOARCH=$(GOARCH) go install ...
但是,当我实际尝试构建时,我得到:
GOOS= GOARCH= go install ...
据我所知,:=
不会导致$@
对分配进行评估。这有可能以某种方式实现吗?如果没有,我基本上想做的就是遍历操作系统列表中的每个项目,然后遍历每个架构,直到我构建了所有选项。在不明确指定每个架构/操作系统组合的情况下,这至少是可能的吗?