前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go使用Makefile构建

Go使用Makefile构建

作者头像
程序员同行者
发布2019-04-22 10:24:32
8750
发布2019-04-22 10:24:32
举报
文章被收录于专栏:程序员同行者程序员同行者

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

工程结构

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

image
image

main.go里面的源码如下:

image
image

就多了一个Makefile文件,如果要使用Makefile去构建你项目,就需要在你的项目里面新建这个Makefile文件。

这里我贴一个简单的Makefile文件的源码:

代码语言:javascript
复制
BINARY_NAME=hello
build:
    go build -o $(BINARY_NAME) -v
    ./$(BINARY_NAME)

解释下上面各行的意思:

  • 第一行,声明了一个变量BINARY_NAME他的值是hello,方便后面使用
  • 第二行,声明一个 target,其实你可以理解成一个对外的方法
  • 第三行,这就是这个target被调用时执行的脚本,这行就是build这个项目,编译后的二进制文件放在当前工程目录下,名字是变量BINARY_NAME的值
  • 第四行,这一行就是直接执行当前目录下的二进制文件

注意:

第三行,第四行前面一定要用tab键缩进,否者会报下面的错:

代码语言:javascript
复制
Makefile:3: *** missing separator.  Stop.

构建

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

代码语言:javascript
复制
make build

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

image
image

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

推荐阅读文献

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们平常很多时候都是直接在命令行输入go build进行编译的:
  • 或者测试使用go run运行项目
  • 我看有很多大型开源项目都是如下方式:
  • 或者是这样
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档