我们平常很多时候都是直接在命令行输入go build进行编译的:
代码语言:javascript复制go build .
或者测试使用go run运行项目
代码语言:javascript复制go run main.go
我看有很多大型开源项目都是如下方式:
代码语言:javascript复制make build
或者是这样
代码语言:javascript复制make install
我们打包运行这个过程,还有一个更加贴切的词语叫做构建项目。
Makefile介绍
Makefile 是和 make 命令一起配合使用的。它是开源的构建工具,很多大型项目的编译都是通过 Makefile 来组织的。
安装make
centons系统的make安装命令:
代码语言:javascript复制yum install -y make
工程结构
我这里新建了一个工程,工程目录是这样:
main.go
里面的源码如下:
就多了一个Makefile文件,如果要使用Makefile去构建你项目,就需要在你的项目里面新建这个Makefile文件。
这里我贴一个简单的Makefile
文件的源码:
BINARY_NAME=hello
build:
go build -o $(BINARY_NAME) -v
./$(BINARY_NAME)
解释下上面各行的意思:
- 第一行,声明了一个变量
BINARY_NAME
他的值是hello
,方便后面使用 - 第二行,声明一个
target
,其实你可以理解成一个对外的方法 - 第三行,这就是这个
target
被调用时执行的脚本,这行就是build这个项目,编译后的二进制文件放在当前工程目录下,名字是变量BINARY_NAME
的值 - 第四行,这一行就是直接执行当前目录下的二进制文件
注意:
第三行,第四行前面一定要用tab
键缩进,否者会报下面的错:
Makefile:3: *** missing separator. Stop.
构建
我们打开我们的终端,直接执行:
代码语言:javascript复制make build
就开始构建了,效果如下:
好了,这次就给大家分享到这里,Makefile的功能很强大,这里只是讲了一丢丢。祝大家有个愉快的周末!
推荐阅读文献
- 跟我一起写Makefile
- Make 命令教程- 阮一峰的网络日志
欢迎您关注程序员同行者订阅号,程序员同行者是一个技术分享平台,主要是运维自动化开发:linux、python、django、saltstack、redis、golang、docker、kubernetes、vue等经验分享及经验交流。