xgo 一键编译多平台
最后更新于:2022-04-02 02:52:21
[TOC]
> [github](https://github.com/techknowlogick/xgo#cgo-dependencies)
## 概述
此仓库为 fork,但是支持 go mod,故推荐
## 安装
```
// 安装镜像
docker pull techknowlogick/xgo:latest
// 安装客户执行命令
go get src.techknowlogick.com/xgo
```
## 语法
```
xgo github.com/project-iris/iris
-v:在编译时打印软件包的名称
-x:在编译过程中打印构建命令
-go:指定go版本如: -go go-1.13.2
-out:指定包前缀 bigant-v0.3.2 -> iris-v0.3.2-darwin-10.6-386
--branch:指定项目分支 release-branch.go1.4
--pkg:指定路口文件所在路径
```
## 教程
### 通过url 编译
默认编译所有版本
```
$ xgo github.com/project-iris/iris
$ ls -al
-rwxr-xr-x 1 root root 6776500 Nov 24 16:44 iris-darwin-10.6-386
-rwxr-xr-x 1 root root 8755532 Nov 24 16:44 iris-darwin-10.6-amd64
-rwxr-xr-x 1 root root 10135248 Nov 24 16:44 iris-linux-386
...
```
### 指定 golang 版本
```
xgo -go go-1.13.2 github.com/project-iris/iri
latest 将使用最新的Go版本(这是默认设置)
go-1.13.x 将使用特定Go版本的最新发行版
```
### 指定前缀
```
xgo -out iris-v0.3.2 github.com/project-iris/iris
...
$ ls -al
-rwxr-xr-x 1 root root 6776500 Nov 24 16:44 iris-v0.3.2-darwin-10.6-386
-rwxr-xr-x 1 root root 8755532 Nov 24 16:44 iris-v0.3.2-darwin-10.6-amd64
...
```
### 选择项目分支
```
$ xgo --branch release-branch.go1.4 golang.org/x/tools/cmd/goimports
...
$ ls -al
-rwxr-xr-x 1 root root 4139868 Nov 24 16:40 goimports-darwin-10.6-386
-rwxr-xr-x 1 root root 5186720 Nov 24 16:40 goimports-darwin-10.6-amd64
...
```
### 指定入门文件所在路径
```
$ xgo --pkg cmd/goimports golang.org/x/tools
...
$ ls -al
-rwxr-xr-x 1 root root 4164448 Nov 24 16:38 goimports-darwin-10.6-386
-rwxr-xr-x 1 root root 5223584 Nov 24 16:38 goimports-darwin-10.6-amd64
...
```
### 指定构建平台
默认是所有平台
```
--targets=linux/arm:仅构建ARMv5 Linux二进制文件(arm-6/ arm-7允许)
--targets=windows/*,darwin/*:构建所有Windows和OSX二进制文件
--targets=*/arm:为所有平台构建ARM二进制文件
--targets=*/*:构建所有支持的目标(默认)
支持的目标是:
平台:darwin,linux,windows
Achitectures: ,386,amd64,arm-5,arm-6,arm-7,arm64,mips,,mipslemips64mips64le
```
### 平台版本
默认只是平台的最低版本,但是有些需要高版本的可以指定版本
```
--targets=darwin-10.9/*:交叉编译到Mac OS X Mavericks
--targets=windows-6.0/*:交叉编译到Windows Vista
```
';