34

Go使用Makefile构建

 5 years ago
source link: https://studygolang.com/articles/19709?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我们平常很多时候都是直接在命令行输入go build进行编译的:

go build .

或者测试使用go run运行项目

go run main.go

我看有很多大型开源项目都是如下方式:

make build

或者是这样

make install

我们打包运行这个过程,还有一个更加贴切的词语叫做构建项目。

Makefile介绍

Makefile 是和 make 命令一起配合使用的。它是开源的构建工具,很多大型项目的编译都是通过 Makefile 来组织的。

安装make

centons系统的make安装命令:

yum install -y make

工程结构

我这里新建了一个工程,工程目录是这样:

Q36Rb2J.png!web

image

main.go 里面的源码如下:

Q7FFZre.png!web

image

就多了一个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.

构建

我们打开我们的终端,直接执行:

make build

就开始构建了,效果如下:

EBrYJjv.png!web

image

好了,这次就给大家分享到这里,Makefile的功能很强大,这里只是讲了一丢丢。祝大家有个愉快的周末!

推荐阅读文献

  • 跟我一起写Makefile

  • Make 命令教程- 阮一峰的网络日志

欢迎您关注程序员同行者订阅号,程序员同行者是一个技术分享平台,主要是运维自动化开发:linux、python、django、saltstack、redis、golang、docker、kubernetes、vue等经验分享及经验交流。

**趁现在,关注我们 **

I7RNjuy.gif

image

牛人并不可怕,可怕的是牛人比我们还努力!

如果您觉得不错,请别忘了转发、分享、点赞让更多的人去学习, 您的举手之劳,就是对小编最好的支持,非常感谢!

uMF3uqn.jpg!web

image


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK