[每周一更]-(第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提供了一个简单而强大的方式来管理构建、测试、格式化和其他任务。

相关内容

热门资讯

突发!天天贵阳app修改器,天... 突发!天天贵阳app修改器,天天海南家园辅助(原来有挂插件)-哔哩哔哩进入游戏-大厅左侧-新手福利-...
据权威媒体报道!随意玩辅助器透... 据权威媒体报道!随意玩辅助器透视挂,新西部外卦辅助器(果然真的有挂)-哔哩哔哩;1、随意玩辅助器透视...
此事迅速冲上热搜!微乐自建房脚... 此事迅速冲上热搜!微乐自建房脚本免费下载,欢聚水鱼智能辅助教程(本来是真的脚本)-哔哩哔哩微乐自建房...
昨日!心悦俱乐部游戏辅助,欢乐... 昨日!心悦俱乐部游戏辅助,欢乐达人破解器(其实是有脚本)-哔哩哔哩1、下载好心悦俱乐部游戏辅助透视辅...
现就发布提示!广西友乐解码器辅... 现就发布提示!广西友乐解码器辅助器,圣游牛牛辅助器(果然有挂修改器)-哔哩哔哩1、玩家可以在广西友乐...
据相关数据显示!边锋辅助脚本,... 据相关数据显示!边锋辅助脚本,决战卡五星游戏辅助器(果然是真的脚本)-哔哩哔哩亲,关键说明,决战卡五...
连日来!微信小程序多乐辅助器免... 连日来!微信小程序多乐辅助器免费下载,人海大厅挂件怎么买(切实真的有修改器)-哔哩哔哩一、微信小程序...
最新消息!潮汕汇游戏辅助,湖北... 最新消息!潮汕汇游戏辅助,湖北逍遥辅助(都是真的有下载)-哔哩哔哩1、超多福利:超高返利,海量正版游...
经核实!广丰510k辅助,心悦... 经核实!广丰510k辅助,心悦游戏辅助(好像是有插件)-哔哩哔哩一、心悦游戏辅助可以开透视的定义与意...
经核实!南通长牌有挂吗,蜀山辅... 经核实!南通长牌有挂吗,蜀山辅助工具(确实真的是有脚本)-哔哩哔哩进入游戏-大厅左侧-新手福利-激活...