语法
- 换行
\
- 注释用
#
- 默认依赖
default: [label]
- 系统命令前不加
@
会把命令也输出到屏幕,加@
不会输出到屏幕 - 变量以最终的定义为准
- 执行命令必须用Tab键,使用空格替换Tab会报错
*** missing separator. Stop.
default: main test
main:
@echo main $(OBJ)
OBJ= \
obj1 \
obj2
test:
@echo test $(OBJ)
OBJ = None
执行
(python37) cndaqiang@mac makefile$ make
main None
test, None
示例
OBJ= \
obj1 \
obj2
default: main
main:
@echo $(OBJ)
赋值
https://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值
其他
删除已有元素
https://cloud.tencent.com/developer/ask/62201
default: main
main:
@echo main $(OBJ)
OBJ= \
obj1 \
obj2
TMPVAR := $(OBJ)
OBJ = $(filter-out obj1, $(TMPVAR))
排序/删除重复元素
w = z z x x y c x 1 2 \
234
w += 1 2
cnq:
@echo $w
@echo $d
d=$(sort $(w))
执行
(python37) cndaqiang@mac tmp$ make
z z x x y c x 1 2 234 1 2
1 2 234 c x y z
本文首发于我的博客@cndaqiang.
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!