看这篇文章之前,你是否打包Go语言开发的项目时,是直接在命令行输入:
代码语言:javascript复制go build .
在开发调试时是否是:
代码语言:javascript复制go run main.go
然后看到开源的Go语言项目在运行时却是:
代码语言:javascript复制make build
或者是这样
代码语言:javascript复制make install
我们打包运行这个过程,还有一个更加贴切的词语叫做构建项目。
今天给大家介绍下Makefile
这个广为使用的构建工具,他是开源的,不仅仅适用于Go当中,C语言的项目或者C 的项目等同样都适用。
— 01 —
Makefile简介
在软件开发中,make通常被视为一种软件构建工具。该工具主要经由读取一种名为“makefile”或“Makefile”的文件来实现软件的自动化建构。
它会通过一种被称之为“target”概念来检查相关文件之间的依赖关系,这种依赖关系的检查系统非常简单,主要通过对比文件的修改时间来实现。
在大多数情况下,我们主要用它来编译源代码,生成结果代码,然后把结果代码连接起来生成可执行文件或者库文件。
很多开源项目里面都在用到
这是最近比较火的以太坊 在GitHub源码截图,其他的我就不再截图了,接下来给大家介绍下怎么使用它开构建我们的项目。
— 02 —
安装
如果你是mac的系统,系统是自带了的,如果是linux就需要自己安装下make,命令很简单。
centons系统的make安装命令:
代码语言:javascript复制yum install -y make
— 03 —
创建配置文件
我这里新建了一个工程,工程目录是这样:
main.go
里面的源码如下:
和我们以往的项目没啥区别,就多了一个Makefile
文件,如果要使用Makefile
去构建你项目,就需要在你的项目里面新建这个Makefile
文件。
这里我贴一个简单的Makefile
文件的源码:
BINARY_NAME=App
run:
go build -o bin/$(BINARY_NAME) -v
./bin/$(BINARY_NAME)
解释下上面各行的意思:
- 第一行,声明了一个变量
BINARY_NAME
他的值是App
,方便后面使用 - 第二行,声明一个
target
,其实你可以理解成一个对外的方法 - 第三行,这就是这个
target
被调用时执行的脚本,这行就是build这个项目,编译后的二进制文件放在当前工程根目录下的bin
目录下,名字是变量BINARY_NAME
的值 - 第四行,这一行就是直接执行当前
bin
目录下的二进制文件
注意:
第三行,第四行前面一定要用tab
键缩进,否者会报下面的错:
Makefile:3: *** missing separator. Stop.
— 04 —
开始构建
我们打开我们的终端,直接执行:
代码语言:javascript复制make run
就开始构建了,效果如下:
好了,这次就给大家分享到这里,后面会继续深入给大家分享。
祝大家有个愉快的周末!