指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

makefile的相关介绍:

Makefile 是用于自动化构建过程的文件,通过它可以定义各种编译规则、文件依赖和操作指令。Makefile 主要由构建工具 make 使用,通常用于编译程序,但也可以被用来处理任何其他任务,比如测试、打包、文档生成等。

一个典型的 Makefile 的结构包括目标(target)、依赖(dependencies)和命令(command),它们一般长这样:

target: dependencies
    command

以下是 Makefile 的主要功能:

  1. 自动化构建:通过 Makefile 可以自动化地进行代码编译,避免手动输入复杂的编译命令。

  2. 管理依赖:Makefile 可以检查源文件是否发生更改,并仅重新编译那些受影响的文件,提高构建效率。

  3. 执行自定义任务:Makefile 可以用于构建、清理、测试、部署等任务,通过 make clean、make test 等命令执行。

  4. 跨平台支持:虽然具体的 Makefile 可能需要针对不同平台做调整,但它提供了一个基础的跨平台构建方案,特别适用于 UNIX 系统。

使用参考手册: https://makefiletutorial.com/ //非官方

定义一个makefile: Makefile 文件通常直接命名为 Makefile(首字母大写,没有文件扩展名),这是约定俗成的命名方式。这样命名后,只需在项目根目录下执行 make 命令即可自动找到并执行 Makefile 文件中的默认任务(即第一个定义的目标)。 如果 Makefile 文件的名称不同于默认的 Makefile,可以使用 -f 选项指定文件名:make -f Makefile.dev

使用案例: 下面是一个典型的 Go 项目 Makefile,包括构建、运行、测试和清理等命令:

定义变量

APP_NAME = myapp VERSION = 1.0.0 BUILD_DIR = build

默认目标

.PHONY: all all: build

编译项目

.PHONY: build build: go build -o $(BUILD_DIR)/$(APP_NAME) main.go

运行项目

.PHONY: run run: go run main.go

执行测试

.PHONY: test test: go test ./...

清理构建文件

.PHONY: clean clean: rm -rf $(BUILD_DIR)

代码检查和格式化

.PHONY: lint lint: go vet ./... golint ./...

在此例中,make 会根据 Makefile 自动化地编译程序,make clean 则可以清理生成的文件。 在这个 Makefile 中,你可以使用以下命令: make build:编译项目,生成二进制文件。 make run:直接运行项目。 make test:执行测试。 make clean:清理构建文件。 make lint:执行代码检查和格式化。

当然在项目根目录中打开终端,运行以下命令来执行 Makefile 中的默认目标: make //不加任何额外命令, 如果想执行特定目标,例如 build 或 test,可以在 make 命令后指定目标名称, 如上所展示的内容.

关于默认目标的定义: 在 Makefile 中,默认目标通常是第一个定义的目标。这个目标会在直接运行 make 时自动执行,所以通常将最常用或核心的任务作为第一个目标,例如 all、build 或 default。

常见的默认目标
  1. all:最常见的默认目标,通常用于执行一系列任务(如构建、测试、代码检查等)。

    .PHONY: all
    all: build test lint
    
  2. build:直接将构建任务作为默认目标,如果构建是项目的核心操作。

    .PHONY: build
    build:
        go build -o myapp main.go
    
  3. default:有些开发者会使用 default 作为默认目标的名称,效果与 all 类似,但这不是一种通用惯例。

    .PHONY: default
    default: build
    
如何选择默认目标
  • 小型项目:一般选择 build 或 run 作为默认目标。
  • 中大型项目:使用 all 作为默认目标,并在其中包含多个任务,例如构建、测试、代码检查等。

例如:

.PHONY: all
all: build test lint

.PHONY: build
build:
    go build -o myapp main.go

.PHONY: test
test:
    go test ./...

.PHONY: lint
lint:
    go vet ./...
    golint ./...

直接执行 make 时,默认会先运行 all 目标,然后依次执行 build、test 和 lint。

.PHONY 用于声明伪目标(phony targets),即标识某些目标不是实际文件,而是任务名称。这样可以避免 make 把目标名称当作文件来处理,提高任务执行的可靠性和性能。