make: Makefile或makefile文件
make -f othername
make --file=othername
makefile写法:
target: components[;rule]
<TAB>rule
说明:target依赖于components,其生成规则定义于rule。components中有一个文件比target新,rule就执行
例如:
main: main.o
..c.o:
说明:以上后三行是隐含规则。只不过隐含规则里是CC,首先要CC=gcc
两条隐含规则:
$(CC) $(CFLAGS) $@ $<
$(CC) -c $< $@
1).PHONY:clean
说明:.PHONY说明clean是伪目标文件
2)include filename
3)例子:
objects=foo.o far.o
all: $(objects)
$(objects): %.c
说明:$(objects)表示变量;
%用来匹配0个或若干个字符
4)-
+
@
5)makefile中第一个目标文件为终极目标
6)多个文件使用同一个头文件的简单写法:
module1.o module2.o module3.o: head.h
7)vpath %.h ../headers
或者使用VPATH=……
vpath
vpath<pattern>
8)\续行,但是\与新的一行之间不能有空白符
9)根据隐含规则,以下等价
a)module1.o: head1.h
b) mudule1.o: module1.c head1.h
10)变量名 赋值符 变量值
赋值符包括:
=
:=
?=
+=
11)预定义变量: CC
12)自动变量:
$^
$<
$@
$*
$?
这些只能出现在命令里,出现在文件列表里为$$^之类
13)ifeq