最近业余时间写的一个项目ydict,中途发布了几个版本,由于这是一个Go写的命令行的工具,跨平台交叉编译后可以在主流的Mac OS, Linux, Windows上运行。如何让每次发布的时候,自动根据版本号,跨平台交叉编译和自动打包出不同平台的软件包呢?这下就轮到Makefile上场了……
之前也有分享过如何用Makefile配合实现自动版本号的功能:Go,Makefile与自动程序版本号的实现,这次我们需要修改一下Makefile,实现根据传入的版本号,批量交叉编译和打包。
直接上Makefile吧: (线上版本地址:https://github.com/TimothyYe/ydict/blob/master/Makefile)
1 | # Binary name |
Makefile主要通过release命令来实现跨平台交叉编译和自动打包。go clean命令用来清理go的编译环境,根据传入不同的参数给GOOS,实现不同平台的编译,最后tar根据版本号变量拼接出编译后带版本号的压缩包。
整个过程看起来非常简单,运行起来也非常简单,调用make release命令,并给VERSION变量赋值不同的版本号即可:
1 | make release VERSION=0.9 |
命令会编译出不同平台可运行的压缩包:
1 | ydict-mac64-0.9.tar.gz |
然后将这些分别上传到GitHub发布即可,省时又省力,不错!