使用makefile构建golang项目

前言

在golang的开发学习过程中,能经常需要执行go test 测试、go build编译、go install安装操作,简单的项目构建起来很方便。但遇到较复杂的项目,比如要跨平台交叉编译,选择性单元测试,性能测试,命令就要附加很多参数,敲起来麻烦,还容易忘记,时常要查看help。为了解决这个问题,我们可以编写shell,将常用操作封装在脚本中,虽然实现简单,但每个人编写、阅读能力不一,不利于规范化。另一个更好的选择,就是makefile了。

Make介绍

make命令是GNU的工程化编译工具,用以实现工程化的管理,提高开发效率。

Make解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。

Makefile文件

构建规则都写在Makefile文件里面,要学会如何Make命令,就必须学会如何编写Makefile文件。

文件格式

Makefile文件由一系列规则(rules)构成。

每条规则要说明构建的依赖条件,及怎么样去构建。那么格式如下,

# rule
<target> : <prerequisites> 
[tab]  <commands>

target: 目标

prerequisites: 先决条件,或者说依赖条件

tab: 使用tab来缩进

command: 要执行的命令

target目标

一个目标,可以是文件名,也可以是某个操作的名字(伪目标),这个名字由自己定义,用来指明要构建的对象。

create:
    touch newfile

比如上面这条规则,伪目标为create,命令作用为创建一个文件。要想构建这个操作,调用make create即可。

但是如果目录下,存在一个文件名为create,那么构建命令就不会去执行。为了解决这个问题,当使用伪目标时,可以明确声明create是“伪目标“,告诉make跳过文件检查。

.PHONY: clean
create:
    touch newfile

如果Make命令运行时没有指定目标,默认会执行Makefile文件的第一个目标。

prerequisites先决条件

先决条件,通常是文件名,多个名字用空格分隔。

它定义了一个是否进行重新构建的判断标准: 如果有任何一个先决文件发生改变(时间戳更新),就要重新构建。

result.txt: source.txt
    
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值