1. 目录结构:

    |—— makefile/   // 根目录
    ****|—— utils/  // 待测试目录
    ********|—— utils.go
    ********|—— utils_test.go
    ****|—— main.go  // 入口文件
    ****|—— go.mod  // go module 文件
    ****|—— Makefile  // makefile 配置文件
  2. 编写 makefile/go.mod 文件:
    module makefile-demo

  3. 编写 makefile/utils/utils.go 文件:

     package utils
    
     func Add(a, b int) int {
         return a + b
     }
    
     func Minus(a, b int) int {
         return a - b
     }
  4. 编写 makefile/utils/utils_test.go 文件:

     package utils
    
     import (
         "testing"
     )
    
     func TestUtils(t *testing.T) {
         c := Add(1, 2)
         if c != 3 {
             t.Errorf("%d + %d != %d", 1, 2, 3)
         }
         d := Minus(3, 2)
         if d != 1 {
             t.Errorf("%d - %d != %d", 3, 2, 1)
         }
         t.Log("测试通过")
     }
  5. 编写 makefile/main.go 文件:

     package main
    
     import (
         "fmt"
         "makefile-demo/utils"
     )
    
     func main() {
         a := 1
         b := 2
         fmt.Printf("a + b = %d \n", utils.Add(a, b))
         fmt.Printf("a - b = %d \n", utils.Minus(a, b))
     }
  6. 编写 makefile/Makefile 文件:

     # 所有自定义步骤列表
     .PHONY: all test build deploy help
    
     # 自定义变量
     OUTPUT_FILE=myapp
    
     # 直接运行 make 命令调用的步骤
     all: test build deploy
    
     # 测试
     test:
         cd utils && \
         go test
    
     # 构建
     build:
         CGO_ENABLED=0 && \
         GOOS=darwin && \
         GOARCH=amd64 && \
         go build -v -ldflags "-w" -o ${OUTPUT_FILE}
    
     # 部署(运行)
     deploy:
         ./${OUTPUT_FILE}
    
     # 帮助信息("@"屏蔽输出)
     help:
         @echo "【make】 -- 测试、构建、部署"
         @echo "【make test】 -- 测试"
         @echo "【make build】 -- 构建"
         @echo "【make deploy】 -- 部署"
         @echo "【make help】 -- 查看帮助"
  7. 执行自定义部署命令:

    make -- 对应【all】
    make test -- 对应【test】
    make build -- 对应【build】
    make deploy -- 对应【deploy】
    make help -- 对应【help】
文档更新时间: 2024-04-20 10:57   作者:lee