微信号:Reboot51

介绍:专注于互联网运维开发分享、交流,让更多的运维工程师更加专注于自动化,为国内公有云开发、监控、运维贡献自己的力量.这里聚集着国内一线互联网工程师,乐于分享与交流 .

golang 构建工具之 Makefile

2019-03-13 18:03 hatlonely


可能是因为编译太简单了,golang 并没有一个官方的构建工具(类似于 java 的 maven 和 gradle之类的),但是除了编译,我们可能还需要下载依赖、运行测试、甚至像 easyjson、protobuf、thrift 这样的工具下载和代码生成,如果没有构建工具,这些工作就会非常麻烦。为了解决这个问题,之前写过一个 everything.sh 的脚本,把所有的操作都封装在这个脚本里面,只需要执行类似于 sh everything.sh dependency 的命令就可以完成对应的工作。大大简化了构建过程,但是也有一个问题,shell 脚本本身的可读性并不是很好,而且对于各个操作之间的依赖不好描述。


一次偶然的机会。在 github 上看到有人用 Makefile,就尝试了一下,发现真的非常合适,Makefile 本身就是用来描述依赖的,可读性非常好,而且与强大的 shell 结合在一起,基本可以实现任何想要的功能。


下面是我在实际项目中使用的一个 Makefile,支持的功能包括

  • make build: 编译

  • make vendor: 下载依赖

  • make api: 生成协议代码

  • make json: easyjson 代码生成

  • make test: 运行单元测试

  • make benchmark: 运行性能测试

  • make stat: 代码复杂度统计,代码行数统计

  • make clean: 清理 build 目录

  • make deep_clean: 清理所有代码以外的其他文件

  • make third: 下载所有依赖的第三方工具

  • make protoc: 下载 protobuf 工具

  • make glide: 下载 glide 依赖管理工具

  • make golang: 下载 golang 环境

  • make cloc: 下载 cloc 统计工具

  • make gocyclo: 下载 gocyclo 圈复杂度计算工具

  • make easyjson: 下载 easyjson 工具


(出处:http://t.cn/EMjD9BW)



精彩推荐
你不知道的 Python locals() 的陷阱
10分钟让你理解 docker 容器中的 uid 和 gid
Python:线程之定位与销毁
Docker 快速搭建 zookeeper3.4 集群
助力求职—— Python 分析拉钩职位
Python 神操作,还原已撤回的微信消息
无监控不运维——使用 Python 写一个小小的项目监控



课程信息

2019年3月13日

Python 零基础入门班

Python 运维自动化进阶班

Docker + K8s 课程

Golang 课程


咨询课程的小伙伴,扫码添加小助手获取



“阅读原文”一起来充电吧!
 
Reboot 更多文章 aerospike 集群搭建 程序员租房妙招,爬一个好房 分享图片 那个“阿里员工”的一日工作流程(文末有节日惊喜) 美团被裁员工哀叹:被裁两个月都没有找到工作,感觉被社会抛弃了
猜您喜欢 【1024前端技术峰会实录】Angular 2 核心模块剖析 学习数据结构与算法分析如何帮助您成为更优秀的开发人员 为小程序而生的小(jiao)手架 Voipo发生严重的数据泄露事件:价值数十亿美元的客户资料被曝光 现实世界中正在用Java解决的难题