慢聊Go之使用Makefile构建执行脚本|Go主题月

1,814 阅读2分钟

image.png

"进阶架构师" 微信公众号,欢迎大家订阅、阅读、评论、点赞!!!!

前言

懒惰有时候能促进进步。因为懒,我们才开发了各种自动化脚本之类的。我们才研究程序,让计算机帮我们去工作。那么,在Go的世界里,有没有一种方法,来自动为我们的应用程序编写任务呢?

今天,我为大家,带来了一款,那就是MakeFile。

image.png

当你经常涉及Golang大型项目,它往往费时保持构建和测试命令go build xxgo 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个任务buildrun而不是。

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}

现在,您可以运行buildrun任务,如下所示:

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项目工作流。

走起来,我们学习的脚步不能停!