内容简介:Go项目有很多命令,且带有参数,可能我们平时开发的时候最常用的就是 go build 、go run 但是当我们使用其他命令时,通常就会携带一堆参数, 比如 go test -v -count=1 - ... 这个时候一个构建脚本可以解决问题,一段Makefile的规则也能解决问题。我个人更加倾向Makefile+script去解决复杂的事情。一个简单的Makefile应该是如下规则格式执行目标,处理先决条件,然后做剩下的事情
背景
Go项目有很多命令,且带有参数,可能我们平时开发的时候最常用的就是 go build 、go run 但是当我们使用其他命令时,通常就会携带一堆参数, 比如 go test -v -count=1 - ... 这个时候一个构建脚本可以解决问题,一段Makefile的规则也能解决问题。我个人更加倾向Makefile+script去解决复杂的事情。
Makefile文件格式
一个简单的Makefile应该是如下规则格式
target ... : prerequisites ... recipe ... ... // 直观一点的 - tab很重要 <target> : <prerequisites> [tab] <commands>
执行目标,处理先决条件,然后做剩下的事情
install: echo installing build: install go build -o main main.go
当执行 make build 其实就是执行了 install-build 下面的命令
常用符号解释
- target: 即自定义的自己想要执行的命令
- prerequisites: 先决条件,执行在target之前,多个用空格隔开
- tab: 每一个command前面一定要有制表符,用于标示这是命令
- commands: 具体执行的命令。
- .PHONY 伪指令,主要作用是命名避免与同名文件冲突和提高性能,加上后此参数,当存在冲突文件,也会执行 target, 否则会报错。
- 不带执行参数,默认执行第一个target
- 在command前加上@,禁止打印出command执行语句,只显示执行结果
- ${val}表示变量,与 shell 一样使用
- 允许使用通配符
- ‘#’表示注释
简单示例
# 二进制文件名 PROJECT="main" # 启动文件PATH MAIN_PATH="main.go" VERSION="v0.0.1" DATE= `date +%FT%T%z` # 可以执行函数,但是函数不能存在 command ifeq (${VERSION}, "v0.0.1") VERSION=VERSION = "v0.0.1" endif version: @echo ${VERSION} # .PHONY 有 build 文件,不影响 build 命令执行 .PHONY: build build: @echo version: ${VERSION} date: ${DATE} os: Mac OS @go build -o ${PROJECT} ${MAIN_PATH} install: @echo download package @go mod download # 交叉编译运行在 linux 系统环境 build-linux: @echo version: ${VERSION} date: ${DATE} os: linux-centOS @GOOS=linux go build -o ${PROJECT} ${MAIN_PATH} run: build @./${PROJECT} clean: rm -rf ./log
注意事项
- *** missing separator. Stop. 错误解决方案:
Makefile 文件,执行命令前面需要用 Tab 制表符标示,空格等无效。如果使用编辑器,注意编辑器设置 Tab 按键的解析,是制表符还是空格。
如果喜欢请点一个赞,如果有疑问请留一条言
转载请注名出处或联系 zhongqing2016@qq.com
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 如何为项目编写良好 README
- 前端项目框架搭建随笔---Tab组件的编写
- 使用typescript+vue 编写电影信息小项目!
- 如何尝试用 GitHub Actions 项目编写容器应用?
- 从 0 到 1 再到 100, 搭建、编写、构建一个前端项目
- 【CuteJavaScript】Angular6入门项目(3.编写服务和引入RxJS)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
活着就为改变世界
[美] 杰弗里·扬、威廉·西蒙 / 蒋永军 / 中信出版社 / 2010-6 / 39.00元
内容简介 苹果公司CEO史蒂夫•乔布斯这个一直活在自己想象的世界里的创业奇才,经历过各种挫折与失落,但他那无所畏惧、敢于承担的个性让他一直努力实践着自己的价值观,总能为他的离奇想法找到解决问题的办法。 本书两位作者通过深入访谈和资料调查,揭秘了许多乔布斯个人的创业经历和家庭变故,为大家塑造了一个活生生的“乔布斯式”的鲜活人物,描述了一个个充满传奇色彩的商业奇迹,真实地再现了乔布斯几十年......一起来看看 《活着就为改变世界》 这本书的介绍吧!