"进阶架构师" 微信公众号,欢迎大家订阅、阅读、评论、点赞!!!!
前言
懒惰有时候能促进进步。因为懒,我们才开发了各种自动化脚本之类的。我们才研究程序,让计算机帮我们去工作。那么,在Go的世界里,有没有一种方法,来自动为我们的应用程序编写任务呢?
今天,我为大家,带来了一款,那就是MakeFile。
当你经常涉及Golang大型项目,它往往费时保持构建和测试命令go build xx,go test xx反复。
Makefile提供了一种非常有效的方法来自动为我们的应用程序编写任务。
让我们了解如何使用makefile轻松设置工作流程!
注意:尽管make工具链非常流行,但仅限于UNIX平台。因此,如果您使用的是Windows,则可能需要在Windows内安装Linux环境(例如msys/ WSL)以使用make命令。
在Go中使用Makefile
生成文件的主要功能用例是使用“标签”轻松运行不同的任务。使用标签,make TAGNAME将仅运行与相对应的任务TAGNAME。
因此,让我们假设一个示例程序main.go。如果要构建此文件,通常需要运行以下命令:
go build main.go
如果要直接执行程序,请执行以下操作:
go build -o main.out main.go
./main.out
但是,使用一个makefile,您可以创建2个任务build,run而不是。
BINARY_NAME=main.out
build:
go build -o ${BINARY_NAME} main.go
run:
go build -o ${BINARY_NAME} main.go
./${BINARY_NAME}
clean:
go clean
rm ${BINARY_NAME}
现在,您可以运行build和run任务,如下所示:
make build
make run
如果您想添加一个默认标签来调用必要的任务,我们可以使用该all标签:
BINARY_NAME=main.out
all: build test
build:
go build -o ${BINARY_NAME} main.go
test:
go test -v main.go
run:
go build -o ${BINARY_NAME} main.go
./${BINARY_NAME}
clean:
go clean
rm ${BINARY_NAME}
现在main.go,当我们运行时,这将构建并测试我们的程序:
make
看看我们的工作现在变得多么容易了?这就是为什么这些构建工具链非常有用的原因!
注意,您可以在makefiles中使用shell变量。变量BINARY_NAME实际上是main.out,因此美元符号将执行变量替换。可以根据需要运行任意数量的复杂任务。
例如,如果项目具有多个需要使用进行安装的依赖项,那么go get package-name,也可以将其自动化!
我们可以创建一个名为的单独任务deps,该任务将直接安装所有相关软件包。
例如,如果我的项目需要Gorilla Websocket库,则可以执行以下任务:
deps:
go get github.com/gorilla/websocket
运行时:
make deps
所有依赖项都已安装。
总结
希望今天能了解如何自动执行构建任务并快速设置Golang项目工作流。
走起来,我们学习的脚步不能停!