make能够使整个软件工程编译、链接只需要一个命令就可以完成。
make在执行时,需要一个命名为Makefile的文件。Makefile文件描述了整个工程的编译,连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译;需要创建哪些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。
Makefile术语
规则:用于说明如何生成一个或多个目标文件,规则格式如下:
targets :prerequisites
command
目标:依赖
命令
main.o:main.c
gcc -c main.c
命令需要以『TAB』键开始
文件名
make命令默认在当前目录下录找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可以使用如下方法指定:
make -f 文件名
伪目标
Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)。
.PHONY:clean
clean:
rm -f hello main.o func1.o func2.o
“.PHONY”将“clean”目标声明为伪目标
变量
hello:main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
相当于
obj=main.o func1.o func2.o
hello:$(obj)
gcc $(obj) -o hello
在makefile中,存在系统默认的自动化变量
-
$^ : 代表所有的依赖文件
-
$@ : 代表目标
-
$< : 代表第一个依赖文件
注释
Makefile中“#”字符后的内容被视作注释
@ : 取消回显,在命令前使用“@”符,取消屏幕回显。