简介
对于C语言:make是一个编译和构建的工具 编译(compile):
- 代码 经过编译 可执行文件
构建(build): - 安排编译的顺序
对于所有语言而言:make是一个目标构建工具 构建
make需要结合makefile使用
安装
windows
- 下载:mingw下载网址
- 添加到path环境变量:你的路径\mingw64\mingw64\bin
- 改名:mingw32-make.exe改名为make.exe
- 测试:
make --version
语法
规则
# 规则语法
<target>: <prerequisites>
[tab] <commands>
# 规则示例
rundev: mvndev
java -Dfile.encoding=utf-8 -jar xcrj.jar "-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"
变量
赋值方式 | 示例 | 变量赋值 | 变量引用 | 说明 |
---|
立即/简单赋值 | x:=hi | 立即赋值 | 引用最近变量值 | 类似编程语言的方式,推荐 | 延迟/递归赋值 | x=hi | 延迟赋值 | 引用最后变量值 | - | 条件赋值 | x?=hi | 延时变量 | - | - | 追加赋值 | x+=xcrj | 立即赋值 | - | - |
示例
x=10
m:=$(x)_before
n=$(x)_after
x=20
test:
@echo $(m)
@echo $(n)
λ make test
10_before
20_after
逻辑
if语句 | 含义 |
---|
ifeq/ifneq else enif | 变量值相等/不相等 | ifdef/ifndef else endif | 变量定义/未定义 |
ifeq/ifneq else enif
name:=xcrj
test:
# 空格
ifeq ($(name),xcrj)
# tab
@echo 'equal'
# 空格
else
# tab
@echo 'not equal'
# 空格
endif
ifdef/ifndef else endif
name:=xcrj
test:
ifdef name
@echo 'def'
else
@echo 'not def'
endif
函数
todo
宏
todo
命令
命令 | 作用 | 示例 |
---|
make | 根据Makefile构建目标 | make rundev |
使用
- 在项目根目录下创建Makefile文件
- 使用make命令执行Makefile文件中的目标
注意
- 命令前使用tab键
- 关键字前使用空格,ifeq else endif关键字前使用空格
'content' :单引号,原原本本输出,不对特殊字符转义"content" :双引号,对特殊字符转义
示例
- 在项目根目录下创建Makefile文件
# 目标声明
.PHONY: mvndev\
rundev
# 变量定义
jarpath:='.\target\xcrj.jar'
# 目标定义
mvndev:
mvn clean install -Dmaven.test.skip=true -Pdev
# 前置目标
rundev: mvndev
java -Dfile.encoding=utf-8 -jar $(jarpath) "-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"
- 使用make命令执行Makefile文件中的目标
make rundev
|