[每周一更]-(第104期):Go中使用Makefile的经验
创始人
2025-01-15 04:41:01
0

在这里插入图片描述

文章目录

      • 1. 项目结构
      • 2. Makefile的基础知识
        • 什么是 Makefile
      • 3. Go项目的Makefile示例
      • 4. 详细解释每个Makefile目标
      • 5. 使用Makefile执行常见任务

在Go项目中,使用Makefile可以简化和自动化常见的开发和部署任务,如编译、测试、格式化和清理。深入认识及实战。

1. 项目结构

首先,我们假设一个简单的Go项目,其目录结构如下:

my-go-project/ ├── Makefile ├── main.go ├── go.mod ├── go.sum ├── pkg/ │   └── example.go ├── cmd/ │   └── myapp/ │       └── main.go └── test/     └── example_test.go 

2. Makefile的基础知识

什么是 Makefile

Makefile 是一种配置文件,包含了一系列的规则,用于指导 make 工具如何构建和管理项目。其主要功能包括:

  • 自动化编译源代码
  • 链接目标文件
  • 生成可执行文件
  • 管理文件依赖

在Makefile中,每个任务称为一个“目标”(target),目标可以依赖其他目标。每个目标由依赖和一组命令组成。Makefile的基本语法如下:

target: dependencies     command 

3. Go项目的Makefile示例

以下是一个针对Go项目的Makefile示例:

# Go parameters GOCMD=go GOBUILD=$(GOCMD) build GOCLEAN=$(GOCMD) clean GOTEST=$(GOCMD) test GOFMT=$(GOCMD) fmt GOMOD=$(GOCMD) mod BINARY_NAME=myapp BINARY_UNIX=$(BINARY_NAME)_unix  all: test build  build:  	$(GOBUILD) -o $(BINARY_NAME) -v ./cmd/myapp  test:  	$(GOTEST) -v ./...  clean:  	$(GOCLEAN) 	rm -f $(BINARY_NAME) 	rm -f $(BINARY_UNIX)  fmt:  	$(GOFMT) ./...  deps:  	$(GOMOD) tidy  run:  	$(GOCMD) run ./cmd/myapp  .PHONY: all build test clean fmt deps run 

4. 详细解释每个Makefile目标

  • all: 默认目标,依赖于 testbuild。运行 make 时会先运行测试,然后构建项目。
  • build: 编译Go项目,生成可执行文件 myapp。命令 go build -o myapp -v ./cmd/myapp 编译指定目录下的文件。
  • test: 运行所有测试。命令 go test -v ./... 会递归地运行项目中的所有测试。
  • clean: 清理编译生成的文件和可执行文件。命令 go clean 会删除编译生成的对象文件,随后删除二进制文件。
  • fmt: 格式化项目中的所有Go文件。命令 go fmt ./... 会递归地格式化项目中的所有Go源文件。
  • deps: 管理项目依赖。命令 go mod tidy 会清理并添加缺少的依赖。
  • run: 运行项目。命令 go run ./cmd/myapp 会编译并运行项目。

5. 使用Makefile执行常见任务

  • 构建项目:

    make build 
  • 运行测试:

    make test 
  • 清理项目:

    make clean 
  • 格式化代码:

    make fmt 
  • 管理依赖:

    make deps 
  • 运行项目:

    make run 

Go项目中使用Makefile,可以大大简化常见的开发和部署任务,提高工作效率。Makefile提供了一个简单而强大的方式来管理构建、测试、格式化和其他任务。

相关内容

热门资讯

总算了解!广西老友有破解吗,开... 总算了解!广西老友有破解吗,开心泉州免费辅助器,攻略教程(有挂分享)1、开心泉州免费辅助器有没有辅助...
无独有偶!微信小程序免费黑科技... 无独有偶!微信小程序免费黑科技透视,微乐小程序多功能修改器法子教程(有挂分享)1、这是跨平台的微乐小...
避坑细节!宝宝游戏辅助,决战卡... 避坑细节!宝宝游戏辅助,决战卡五星游戏辅助器,积累教程(有挂规律)亲,关键说明,决战卡五星游戏辅助器...
据权威媒体报道!微信小程序免费... 据权威媒体报道!微信小程序免费黑科技透视,钱塘十三水其实真的有挂手段教程(有挂详细)1、钱塘十三水其...
实测揭晓!同乡游辅助工具制作,... 实测揭晓!同乡游辅助工具制作,永胜联盟会封号吗,模块教程(有挂教学)1、同乡游辅助工具制作模拟器是什...
实测必看!微信小程序免费黑科技... 实测必看!微信小程序免费黑科技开挂,皮皮胡子辅助举措教程(有挂详细)1、起透看视 微信小程序免费黑科...
一分钟揭秘!微乐小程序免费黑科... 一分钟揭秘!微乐小程序免费黑科技安卓,新超凡软件辅助练习教程(有挂存在)1、微乐小程序免费黑科技脚本...
必备辅助推荐!蜜瓜大厅可以装挂... 必备辅助推荐!蜜瓜大厅可以装挂吗,友友联盟辅助脚本,指南书教程(有挂技术)1、进入游戏-大厅左侧-新...
今日焦点!微信小程序免费黑科技... 今日焦点!微信小程序免费黑科技透视,川南久久辅助模块教程(存在有挂)运微信小程序免费黑科技辅助工具,...
技术分享!山西扣点点辅助工具,... 技术分享!山西扣点点辅助工具,福州十八扑外卦视频,诀窍教程(有挂方法)1、山西扣点点辅助工具公共底牌...