go使用Makefile构建
原由
在 Golang 的开发过程中,我们习惯于不断重复地手动执行 go build
和 go test
这两个命令。但是在一些复杂的任务中,如果依旧是手动执行 go build
和 go test
,就可能会成为一个让人头疼的事情。
我们可以通过其他方式解决这个问题。比如,可以用一个 bash 脚本来完成这些工作。但更好的选择是,写一个 makefile.。make 这个工具生来就是为了做这些事情,在 makefile 中我们可以将所有常见的任务都放在一起。
这样能够将makefile文件放在git记录中,方便多人协作和共享。毕竟大型项目有很多依赖关系,build或者测试更加复杂。
平常很多时候都是直接在命令行输入go build
进行编译的
1 | go build . |
或者测试使用go run运行项目
1 | go run main.go |
大型开源项目都是如下方式
1 | make build |
我们打包运行这个过程,还有一个更加贴切的词语叫做构建项目。
Makefile介绍
Makefile 是和 make 命令一起配合使用的。它是开源的构建工具,很多大型项目的编译都是通过 Makefile 来组织的。
1 | BINARY_NAME=hello |
解释下上面各行的意思:
- 第一行,声明了一个变量
BINARY_NAME
他的值是hello
,方便后面使用 - 第二行,声明一个
target
,其实你可以理解成一个对外的方法 - 第三行,这就是这个
target
被调用时执行的脚本,这行就是build这个项目,编译后的二进制文件放在当前工程目录下,名字是变量BINARY_NAME
的值 - 第四行,这一行就是直接执行当前目录下的二进制文件
注意:
第三行,第四行前面一定要用tab
键缩进,否者会报下面的错:
1 | Makefile:3: *** missing separator. Stop. |
Demo
在公司项目中,常常是这样使用的。
示例
1 | IMAGE=hello |
使用
1 | # 编译 |
还可以结合多重构建方式](http://www.pangxieke.com/linux/docker-auto-multi-build.html),更加规范的构建项目
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 螃蟹壳!