UseMakefileBuild - ErikJiang/kafka_cluster_example GitHub Wiki

使用 Makefile 简化构建命令

项目工程的构建往往会涉及到一些繁琐且重复的命令操作,一条条命令手动的去执行是一件相当让人烦躁的事情;

如果有一种工具,能够帮助我们管理整合这些琐碎的操作,并以一种简洁便利的方式构建项目工程,那我们一定要学会感恩 🙇 , awesome!

嗯,没有悬念,这个工具就是 Make!

关于安装

如果是 like Uinx 系统,找到对应的包管理器,比如:brewaptyum,直接命令安装即可;

如果是 Windows 系统,劳驾下载 mingw,然后指定该 bin 目录设置环境变量(命令:mingw32-make);

目标 target

使用 make,就需要通过编写 makefile 文件来构建规则;

Makefile 文件由一系列规则(rules)构成。每条规则的格式类似如下:

<target> : <prerequisites> 
[tab]  <commands>

一个目标 对应一条规则,目标通常为文件名,但也可以表示某个操作名称;

但是如果表示为操作名称时,我们会称该目标为“伪目标(phony target)”;

如果定义的规则目标是一个伪目标,需要使用 .PHONY: <target> 进行声明,否则 make 会误认为该目标是一个文件;

前置条件 prerequisites

可以理解 为目标执行的前置依赖条件,通常为一组文件并以空格分隔;

如果指定的前置条件不存在,或者前置条件文件发生改变,该目标就要重新构建,否则不会执行任何操作;

前置条件当然可以为空,表示该目标不依赖任何条件,只要目标不存在,执行就会重新构建;

命令 commands

命令 表示一条规则执行的实质内容,它是构建目标的具体指令,是一行或多行的 Shell 命令;

每行命令前默认必须有一个[tab]键;

每行命令会在一个单独的 shell 中执行,这些 shell 之间没有继承关系,比如在第一条命令添加了一个环境变量,那么在第二条命令所在的上下文环境将无法读取该环境变量;

若要求目标在单个 shell 中执行多条命令,那么命令可以使用 ; 分割,如果命令多到必须换行时,可在行尾添加 \

项目实例

本项目: Makefile

$ make

Choose a command run in kafka_cluster_example:

Usage: make [target]

Valid target values are:

vendor                  Auto generate go vendor dir.
up                      Docker compose up for src.
down                    Docker compose down for src.
ps                      Docker compose ps for src.
logs                    Docker compose logs for src.
clean                   Clean up docker images for src.
test                    Apache benchmark test for src.
kafka-up                Docker compose up for kafka services.
kafka-down              Docker compose down for kafka services.
kafka-clean             Clean up log and data files for kafka services.
kafka-test              Check running state of the kafka service.
help                    print this help message and exit.

更多可参考:

⚠️ **GitHub.com Fallback** ⚠️