登录
首页 >  Golang >  Go问答

使用 make 为不同架构构建动态目标?

来源:stackoverflow

时间:2024-04-05 12:09:34 418浏览 收藏

哈喽!今天心血来潮给大家带来了《使用 make 为不同架构构建动态目标?》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

我正在寻找一种方法来基本上迭代架构列表并使用 make 构建独特的架构。例如,我有一个包含所有架构的变量,以及当前的静态目标。

下面是我的(简化的)逻辑。

ALL_ARCHES=amd64 arm arm64  
VERSION=$(shell git symbolic-ref --short HEAD)-$(shell git rev-parse --short HEAD)

cmd/mything/mything: cmd/mything/*.go
            CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=$(VERSION)" -o $@ cmd/mything/*.go
...

我基本上想通过迭代 all_arches 变量来替换 goarch=amd64,创建一个代表给定架构的唯一二进制文件。


解决方案


假设您接受将二进制文件命名为 cmd/mything/mything-arch,其中 arch 是目标架构,您可以尝试:

ALL_ARCHES := amd64 arm arm64   
VERSION    := $(shell git symbolic-ref --short HEAD)-$(shell git rev-parse --short HEAD)

.PHONY: all

all: $(addprefix cmd/mything/mything-,$(ALL_ARCHES))

cmd/mything/mything-%: cmd/mything/*.go
    CGO_ENABLED=0 GOOS=linux GOARCH=$* go build -ldflags "-X main.version=$(VERSION)" -o $@ $^

$* 是自动变量,在模式规则中扩展为目标名称的词干。

理论要掌握,实操不能落!以上关于《使用 make 为不同架构构建动态目标?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>