专栏首页程序员同行者Go使用Makefile构建

Go使用Makefile构建

我们平常很多时候都是直接在命令行输入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

工程结构

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

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.

构建

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

make build

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

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

推荐阅读文献

  • 跟我一起写Makefile 
  • Make 命令教程- 阮一峰的网络日志

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python3模块: uuid

    程序员同行者
  • python多线程获取子线程任务返回值

    程序员同行者
  • 解决内网主机ping不通网关能ping内网

    程序员同行者
  • Makefile文件编写

    make 的参数有很多, 可以通过 make -h 去查看, 下面只介绍几个我认为比较有用的。

    用户2929716
  • Docker实践之03-Dockerfile指令详解

    所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个nginx镜像的容器,再进行修改一样,基础镜像是必须指定的。而FROM就是指定基础...

    2Simple
  • 聊聊flink Table的Over Windows

    flink-table_2.11-1.7.0-sources.jar!/org/apache/flink/table/api/table.scala

    codecraft
  • 聊聊flink Table的Over Windows

    flink-table_2.11-1.7.0-sources.jar!/org/apache/flink/table/api/table.scala

    codecraft
  • 2019腾讯犀牛鸟精英人才培养计划课题介绍(七)—自然语言处理

    ? “ 精英人才培养计划是一项校企联合人才培养项目,入选学生将受到业界顶尖技术团队与高校导师的联合指导及培养。培养期间,学生将获得3个月以上到访腾讯开展科研访...

    腾讯高校合作
  • 突破韦恩图数量限制,R包UpSetR集合可视化

    传统的维恩图通常很难展示>5组以上的集合情形,而花瓣图则丢失了很多信息。与之相比,UpSet绘图提供了一种有效的方法来可视化多个集合的交集,它通过R包UpSet...

    用户7585161
  • 如何调试Android Native Framework

    半年前写了一篇文章,介绍 如何调试Android Framework,但是只提到了Framework中Java代码的调试办法,但实际上有很多代码都是用C++实现...

    weishu

扫码关注云+社区

领取腾讯云代金券