我们平常很多时候都是直接在命令行输入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等经验分享及经验交流。


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

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

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

最新文章

  1. 听大神说:https和http有何区别?(转)
  2. 一款css3很美的iphone注册表单样式
  3. oracle数据库导入、导出
  4. 高并发分布式系统中生成全局唯一Id汇总
  5. 保存知乎收藏夹功能的NodeJS版本
  6. js获取光标位置例子
  7. 应用ubuntu(安装)
  8. Selenium2学习之-环境搭建
  9. Java1.5泛型指南中文版(Java1.5 Generic Tutorial)
  10. IOS开发中UIAlertController(警告框)的使用
  11. 【Centos7】卸载OpenJDK
  12. SAP Solution Manager 能够连接到 SAP Service Marketplace
  13. Lodop打印维护PRINT_SETUP本地缓存ini文件
  14. 洛谷.4245.[模板]任意模数NTT(MTT/三模数NTT)
  15. hdu 3405 删掉某点后 求最小生成树
  16. 创建PCB原理图的模板
  17. [记录] 解决img的1px空白问题
  18. git——^和~的区别(转)
  19. 对于多个button要在同一个监听器中实现自己的单击事件的方法小诀窍。
  20. 2016 ACM/ICPC Asia Regional Qingdao Online 1001 I Count Two Three(打表+二分搜索)

热门文章

  1. PHP字符过滤方法
  2. docker容器访问宿主机IP
  3. 在ASP.NET Core 中怎样使用 EF 框架读取数据库数据
  4. CentOS修改yum源
  5. Rabin-Karp ACM训练
  6. JavaScript模板引擎Handlebars
  7. Tomcat手动部署Web项目详细步骤
  8. 关于分页器border重叠问题
  9. python elasticsearch 批量写入数据
  10. Java作业十(2017-11-8)