首页 > 其他分享 >Go 项目的 MAKE 工具

Go 项目的 MAKE 工具

时间:2023-09-25 16:35:34浏览次数:46  
标签:MAKE Makefile test build go Go 工具

  1. Go 项目的 MAKE 工具

MAKE 工具是 Linux 和 Unix 系统中一种常见的自动化构建工具,通常用于管理和组织软件项目。在 Go 语言中,使用 MAKE 工具可以轻松地管理和构建项目,并自动执行诸如编译、测试、安装等复杂的操作。 下面将介绍如何在 Go 项目中使用 MAKE 工具,并说明其主要优势和用法。 MAKE 工具的优势 MAKE 工具最大的优势在于它可以根据指定的规则来自动执行一系列的任务,从而减少了手动操作的时间和错误率。在 Go 项目中,使用 MAKE 工具可以帮助开发人员完成以下工作:
  1. 编译和构建:MAKE 工具可以根据指定的规则自动编译和构建 Go 项目,生成可执行文件或库文件。
  2. 测试和检查:MAKE 工具可以自动运行项目中的单元测试、性能测试和代码检查,以确保项目质量和可靠性。
  3. 安装和部署:MAKE 工具可以将编译好的程序或库文件自动安装到系统中,并实现自动部署。
  4. 清理和卸载:MAKE 工具可以清除编译过程中生成的临时文件,卸载已安装的程序或库文件。
  1. MAKE 工具的使用方法

使用 MAKE 工具需要创建一个名为 "Makefile" 的文本文件,其中包含了项目中所需的目标、依赖项和命令。 下面是一个简单的 Makefile 文件示例:
复制代码
all: build test

build:
        go build -o myapp main.go

test:
        go test ./...

clean:
        rm -f myapp
这个 Makefile 文件定义了三个目标:all、build 和 test,以及一个清理目标 clean。其中,all 目标依赖于 build 和 test 两个目标,意味着在执行 all 目标时,会先编译并构建项目,然后运行项目中的单元测试。而 build 目标则只负责编译和构建项目,test 目标则只负责运行单元测试。 要使用这个 Makefile 文件,只需要在命令行中输入 "make <target>" 命令即可执行对应的任务。例如,要编译和构建项目,可以输入 "make build" 命令;要运行单元测试,可以输入 "make test" 命令;要执行所有任务,可以输入 "make all" 命令。
  1. MAKE 工具高级用法

除了基本的目标和依赖项之外,MAKE 工具还提供了许多高级功能和技巧,用于进一步优化和简化项目的构建和管理。以下是一些例子:

3.1 变量和参数:

使用变量和参数可以使得 Makefile 文件更加灵活和可配置。例如,可以设置一个变量来存储项目名称,然后在各个目标中引用该变量。
复制代码
APP_NAME=myapp

all: build test

build:
        go build -o $(APP_NAME) main.go

test:
        go test ./... -v

clean:
        rm -f $(APP_NAME)

3.2 条件语句和循环:

MAKE 工具支持基本的条件语句和循环结构,可以根据不同的条件来执行不同的目标或命令。
复制代码
ifeq ($(OS),Windows_NT)
EXTENSION=.exe
else
EXTENSION=
endifall: build testbuild:
        go build -o myapp$(EXTENSION) main.go

test:
        go test ./... -v

clean:
        rm -f myapp$(EXTENSION)

3.3 函数和命令替换:

MAKE 工具允许在 Makefile 中使用自定义函数和命令替 换,可以进一步简化和优化构建过程。例如,可以定义一个函数来获取项目的版本号,并将其用于构建命令中。
复制代码
VERSION=$(shell git describe --tags --abbrev=0)

all: build test

build:
        go build -o myapp -ldflags "-X main.version=$(VERSION)" main.go

test:
        go test ./... -v

clean:
        rm -f myapp
在上述代码中,使用 $(shell) 函数来调用 Git 命令来获取项目版本号,并将其存储在 VERSION 变量中。然后,在编译命令中使用 -ldflags 参数来将版本号传递给程序。

3.4 并行执行:

MAKE 工具支持并行执行多个目标,可以加快构建速度和效率。
复制代码
.PHONY: all build test clean

all: build test

build:
        @echo "Building..."
        @go build -o myapp main.go

test:
        @echo "Testing..."
        @go test ./...

clean:
        @echo "Cleaning..."
        @rm -f myapp

parallel:
        @echo "Parallel execution..."
        @make -j2 build test
在上述代码中,通过在 "make" 命令中添加 "-j2" 参数来指定并行执行数量为 2,从而同时执行 build 和 test 目标。
  1. 总结

MAKE 工具是 Go 项目中常用的自动化构建工具,它可以帮助开发人员自动化管理项目中的任务和操作,从而提高开发效率和减少错误。通过编写 Makefile 文件,可以将所有必要的任务和依赖项组织起来,使得整个项目更加清晰和易于维护。同时,MAKE 工具还支持许多高级功能和技巧,例如变量、参数、条件语句、循环、函数和命令替换等,可以进一步简化和优化构建过程。  
  1. 可参考的教程

以下是一些关于 Go 项目的 MAKE 工具的好文章和链接,供您参考: 5.1 基于 Makefile 的 Go 项目构建 - https://tonybai.com/2017/03/03/build-golang-application-with-makefile/ 这篇文章介绍了如何使用 Makefile 来自动化构建和管理 Go 项目,并提供了一些实用的技巧和示例。 5.2 使用 Makefile 构建 Go 项目 - https://www.jianshu.com/p/3d7e9477decc 这篇文章介绍了如何编写 Makefile 文件来构建 Go 项目,并解释了 Makefile 中的各种语法和规则。 5.3 简单易学的 Makefile 教程 - https://seisman.github.io/how-to-write-makefile/introduction.html 这篇文章介绍了 Makefile 的基本概念、语法和用法,适合初学者阅读。 5.4 MAKE 工具官方文档 - https://www.gnu.org/software/make/manual/make.html 这是 MAKE 工具的官方文档,详细介绍了 MAKE 工具的各种功能和用法,可以作为参考手册使用。    

标签:MAKE,Makefile,test,build,go,Go,工具
From: https://www.cnblogs.com/shoshana-kong/p/17728216.html

相关文章

  • Go开发pb
     pb开发-proto文件以及PB在go项目中的开发过程 以下是一个简单的示例,演示如何在Go项目中使用PB进行开发:编写Proto文件假设我们要开发一个简单的分布式计算系统。首先,我们需要编写一个Proto文件来定义请求和响应消息类型以及服务接口。以下是一个示例:复制代码sy......
  • Golang 的骚操作:go:linkname
    背景在看源码时,一些源码方法没有方法体,难道说明这些方法为空?例如:time.Now调用的now(),time.Sleep,reflect.makechan//Providedbypackageruntime.funcnow()(secint64,nsecint32,monoint64)funcSleep(dDuration)funcmakechan(typ*rtype,sizeint)(ch......
  • go 定义类型
    定义变量方式定义变量时需要注意在最外层一定要使用var的方式定义变量不能使用':='的方式,只有在func里面可以使用':='定义变量var(strstring="holle"sumint=1enablebool=false)functest1(){varstr2string="你好"str1:="......
  • SPEOS—光学产品设计及仿真工具
        SPEOS是ANSYS公司功能强大的光学仿真软件,用于光学设计、环境与视觉模拟、成像仿真等,强大的解决方案提供了可视化光学系统和直观的人机交互平台,其仿真技术已广泛用于汽车、电子电器、精密仪器、照明设备等领域。SPEOS软件内嵌ISO和CIE国际标准,可整合结构进行光机系统的......
  • CMake项目,将CMakeList.txt中的变量传递到代码中。
    有些时候,代码中可能需要获取CMakeList中的变量。常见的就是路径之类的。在CMake项目中,有一个参数可以将变量传递到代码中:CMakeList.txt中:#1.声明定义变量set(CMAKE_VAR"CMAKEMESSAGE123123")#2.传递变量#使用target_compile_definitions#将CMAKE_VAR变量赋值给MY_VAR......
  • golang 1.18 workspace mode
    why?为什么需要workspace历史发展和版本依赖的管理GOPATH最开始的模式开发者需要设置一个环境变量GOPATH,用于指定项目的工作空间。GOPATH是一个目录路径,其中包括了三个重要的子目录:src、bin和pkg通过goget命令,GOPATH/src下的相应目录中缺点:必须指定GOPATH......
  • Django celery 定时任务与周期任务的创建-暂停-开始-删除
    发开阶段遇到了需要定时任务以及周期任务才能进行的事情,这里进行记录一下,防止下次我再写的时候写不明白。首先在你们项目里面创建以下文件:celery:importosos.environ.setdefault("DJANGO_SETTINGS_MODULE","settings")fromceleryimportCeleryfromquality_control.ce......
  • 浏览器开发者工具打开检测
    目录方法一console.log方法二:debugger方法三:console.table方法四:内容宽度总结方法一console.log在safari中,如果打开了控制台,console.log打印日期实例、函数实例、正则实例会触发两次toString方法,那么可以重写toString方法检测是否打开了控制台。letcount=0;constt......
  • 文档升级 | iTOP-RK3568开发板ADB工具的安装和使用
    iTOP-RK3568开发板使用手册更新,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。《iTOP-3568开发板ADB使用手册》进行了文档升级,对ADB工具的安装和使用进行了更全面的步骤介绍。第1章安装adb工具1.1adb简介1.2Windows下安装ADB工具1.3Ubuntu下安装ADB工具第2章......
  • CAP项目集成带身份和证书验证的MongoDB
    大家好,我是Edison。最近,在使用CAP事件总线时,碰到了这样一个需求:微服务采用的是MongoDB,而且还是带身份验证和SSL根证书验证的。由于目前网上能找到的资料,都是不带身份验证的MongoDB,现在网络信息安全越来越被重视,那么就需要自己研究一番了。CAP.MongoDB组件CAP是一个开源的事件......